@echo off
cls
chcp 936 >nul
echo =======================================================
echo   正在自动安装 SQL Server 2005 并配置 TCP/IP 端口...
echo =======================================================

:: 1. 启动静默安装 SQL Server 2005 实例
echo 1. 正在执行静默安装，请稍候 (可能需要几分钟)...
start /wait "" ".\SQL Server x64\Servers\setup.exe" /qb INSTANCENAME=SQLEXPRESS ADDLOCAL=ALL SECURITYMODE=SQL SAPWD=1qaz2wsx SQLACCOUNT="NT AUTHORITY\SYSTEM" AGTACCOUNT="NT AUTHORITY\SYSTEM" SQLBROWSERACCOUNT="NT AUTHORITY\SYSTEM" ASACCOUNT="NT AUTHORITY\SYSTEM" ASPASSWORD=""

:: 检查安装是否成功
if %ERRORLEVEL% NEQ 0 (
    echo 安装失败，错误代码: %ERRORLEVEL%
    pause
    exit /b 1
)

:: 2. 修改注册表：强制将该实例的固定端口设为 1433，动态端口设为 1200
echo 2. 正在配置 TCP/IP 端口 (静态:1433 / 动态:1200)...
:: 注意：在 SQL Server 2005 中，第一台实例在注册表中固定表现为 MSSQL.1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" /v TcpPort /t REG_SZ /d "1433" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" /v TcpDynamicPorts /t REG_SZ /d "1200" /f

:: 3. 强制启用 TCP/IP 协议 (SQL 2005 默认不开启网络连接，必须手动激活)
echo 3. 正在激活 TCP/IP 网络协议...
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp" /v Enabled /t REG_DWORD /d 1 /f

:: 4. 打开中讯防火墙端口
echo 开放中讯防火墙端口 1433 1200
netsh advfirewall firewall add rule name="SQL SERVER 1433" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="SQL SERVER 1200" dir=in action=allow protocol=TCP localport=1200

:: 5. 重启 SQL Server 服务以使网络设置立即生效
echo 4. 正在重新启动 SQL Server 服务...
net stop MSSQL$SQLEXPRESS
net start MSSQL$SQLEXPRESS

echo =======================================================
echo   SQL Server 2005 安装与端口配置已全部完成！
echo =======================================================
pause