在开发文档中,如果你想处理 MSSQL(Microsoft SQL Server)安装提示重启的清除挂起状态,你可以编写一个批处理脚本来删除可能导致挂起的注册表项和文件锁。通常,在安装 MSSQL 时,系统会提示重启以完成安装,如果安装过程没有成功清除挂起状态,可能会导致重复的重启提示或其他安装问题。

 

根据 SQL Server 默认端口 1433 设置防火墙规则,可以使用以下 PowerShell 命令:

允许入站流量:

powershellCopy Code
New-NetFirewallRule -DisplayName "SQL Server Inbound" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 1433

允许出站流量:

powershellCopy Code
New-NetFirewallRule -DisplayName "SQL Server Outbound" -Direction Outbound -Action Allow -Protocol TCP -LocalPort 1433

说明:

  • New-NetFirewallRule:创建一个新的防火墙规则。
  • -DisplayName "SQL Server Inbound":为规则指定一个名称,描述入站流量规则。
  • -Direction Inbound:表示规则针对入站流量。
  • -Action Allow:表示允许流量。
  • -Protocol TCP:指定协议类型为 TCP。
  • -LocalPort 1433:指定 SQL Server 默认端口 1433。

转换为批处理文件:

如果你希望将这个设置转换为批处理文件(.cmd),并使用 netsh 命令设置防火墙规则,可以参考下面的内容:

批处理文件(.cmd)示例:

Copy Code
@echo off

:: 允许入站流量
netsh advfirewall firewall add rule name="SQL Server Inbound" dir=in action=allow protocol=TCP localport=1433

:: 允许出站流量
netsh advfirewall firewall add rule name="SQL Server Outbound" dir=out action=allow protocol=TCP localport=1433

echo 防火墙规则已成功添加!
pause

说明:

  • netsh advfirewall firewall add rule:用于添加新的防火墙规则。
  • name="SQL Server Inbound" 和 name="SQL Server Outbound":为规则指定名称,便于识别。
  • dir=in 和 dir=out:分别表示入站流量和出站流量。
  • action=allow:表示允许流量通过。
  • protocol=TCP:设置协议为 TCP。
  • localport=1433:指定端口 1433,SQL Server 默认的 TCP 端口。

使用方法:

  1. 将批处理内容保存为 .cmd 文件(例如 configure_sql_firewall.cmd)。
  2. 右键点击 .cmd 文件并选择“以管理员身份运行”。
  3. 运行该批处理文件后,防火墙将允许 SQL Server 使用 1433 端口的入站和出站流量。

通过这些步骤,你可以成功地为 SQL Server 配置防火墙规则,允许通过端口 1433 的流量。

 

@echo off

:: 允许入站流量
netsh advfirewall firewall add rule name="SQL Server Inbound" dir=in action=allow protocol=TCP localport=1433

:: 允许出站流量
netsh advfirewall firewall add rule name="SQL Server Outbound" dir=out action=allow protocol=TCP localport=1433

echo 防火墙规则已成功添加!
pause

说明:

  1. netsh advfirewall firewall add rule:用来添加防火墙规则。
  2. name="SQL Server Inbound" 和 name="SQL Server Outbound":规则名称。
  3. dir=in:表示规则针对入站流量(入站流量)。
  4. dir=out:表示规则针对出站流量(出站流量)。
  5. action=allow:表示允许流量。
  6. protocol=TCP:指定协议为 TCP。
  7. localport=1433:指定端口号 1433,通常用于 SQL Server。

 


在开发文档中,如果你想处理 MSSQL(Microsoft SQL Server)安装提示重启的清除挂起状态,你可以编写一个批处理脚本来删除可能导致挂起的注册表项和文件锁。通常,在安装 MSSQL 时,系统会提示重启以完成安装,如果安装过程没有成功清除挂起状态,可能会导致重复的重启提示或其他安装问题。

下面是一个基本的批处理脚本,旨在清除 MSSQL 安装时的挂起状态:

批处理脚本:清除 MSSQL 安装重启挂起状态

Copy Code
@echo off
:: 执行脚本前,提示用户注意事项
echo 正在尝试清除 MSSQL 安装后的挂起重启状态...
echo 请确保你已经备份了重要数据,并且在执行脚本之前没有进行其他重要操作。

:: 删除可能导致挂起状态的注册表项
echo 正在删除挂起重启相关的注册表项...
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" /f >nul 2>&1
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\UpdateNotify" /f >nul 2>&1
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" /f >nul 2>&1

:: 删除安装文件锁定或挂起的其他系统项
echo 正在删除安装文件挂起标记...
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" /f >nul 2>&1

:: 删除更新重启标志
echo 正在删除更新重启标志...
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\RebootRequired" /f >nul 2>&1

:: 清除安装挂起标记
echo 正在清除 MSSQL 安装挂起状态...
del /f /q "%windir%\WindowsUpdate.log" >nul 2>&1
del /f /q "%windir%\SoftwareDistribution\Download\*.*" >nul 2>&1
del /f /q "%windir%\SoftwareDistribution\DataStore\*.*" >nul 2>&1

:: 提示用户完成操作
echo 清除挂起状态操作已完成。如果问题仍然存在,请重启计算机并重新安装 MSSQL。

:: 完成
pause
exit

脚本说明:

  1. 删除注册表项:这些注册表项通常会标记更新或安装操作是否需要重启。删除这些项后,系统将不再认为安装需要重启。

    • RebootRequired:表示系统是否需要重启来完成某些操作。
    • PendingFileRenameOperations:如果有待重命名的文件(例如更新文件或安装文件),这个注册表项可能会标记挂起状态。
  2. 清除文件

    • 删除 Windows Update 的日志文件 和 缓存文件夹,这些文件可能会保存更新的挂起状态。
  3. 提示信息:脚本中会输出操作状态提示,确保用户理解每一步操作的目的。

 


针对安装SQL Server时因挂起操作导致的重启提示,您提供的注册表方法有一定效果,但需要注意以下优化步骤和潜在风险:

优化后的解决方案:

  1. 创建注册表文件(改进版):

reg
复制
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"PendingFileRenameOperations"=-

说明:使用-=符号可彻底删除键值而非设为空值

  1. 操作步骤:

    • 关闭所有SQL安装程序窗口

    • 右键记事本 > 以管理员身份运行

    • 粘贴上述代码 > 保存为 ClearPending.reg(编码选ANSI)

    • 双击导入注册表文件

    • 重启系统(推荐)

补充解决方案:

  1. 命令行清除(无需重启):

cmd
复制
REG DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v PendingFileRenameOperations /f
  1. 使用官方清理工具:
    下载 Microsoft Install Clean Up 工具彻底清除残留:
    https://support.microsoft.com/en-us/topic/how-to-remove-office-products-using-the-microsoft-easy-fix-tool-d361155e-0a58-434e-8a3d-73d7a5530b21

注意事项:

  1. 操作前务必创建系统还原点

  2. 若存在多个挂起操作建议使用官方安装程序自带的清除功能

  3. 检查以下目录残留文件:

    • C:\Program Files\Microsoft SQL Server\

    • C:\Program Files (x86)\Microsoft SQL Server\

进阶排查:

  1. 检查事件查看器中的安装错误日志

  2. 使用Process Monitor监控文件锁定情况

  3. 确保系统满足SQL Server的版本要求

建议优先尝试命令行清除方法,若无效再使用注册表修改。完成操作后重新运行安装程序时,建议右键安装程序选择"以管理员身份运行"。

📌 重要提示:该方法仅适用于由文件操作挂起导致的安装问题,若存在其他组件依赖问题仍需进一步排查。

 

 

posted @ 2025-04-05 15:53  suv789  阅读(60)  评论(0)    收藏  举报