SQL无人值守安装的IACCEPTSQLSERVERLICENSETERMS参数

我在部署项目的时候,需要用批处理无人值守安装SQLserver,.Net等组件。

于是查了微软官方文档,其中一项内容如下:

http://msdn.microsoft.com/zh-cn/library/ms144259.aspx

             

SQL Server 安装程序控件

      
        

   /IACCEPTSQLSERVERLICENSETERMS

        

   仅在为无人参与安装指定了 /Q 或 /QS 参数时是必需的。      

必需,用于确认接受许可条款。

 

请注意,此项提示将“无人参与安装指定了 /Q 或 /QS 参数时是必需的”重点标识了。。

并且,给出了一个示例,内容如下:

安装新的具有 SQL Server 数据库引擎、复制和全文搜索组件的独立实例。
Setup.exe /q /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="<DomainName\UserName>" /SQLSVCPASSWORD="<StrongPassword>" /SQLSYSADMINACCOUNTS="<DomainName\UserName>" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /IACCEPTSQLSERVERLICENSETERMS


在我多次安装均出错的情况下,先解压了安装包,再进行命令行下手工尝试,得到错误为“无法识别指定的设置“IACCEPTSQLSERVERLICENSETERMS”。

我尝试删除了 /IACCEPTSQLSERVERLICENSETERMS 参数。出人意料的竟然成功了。。

这,这简直就是坑爹啊!!!

PS:经560889223提醒,我专门又查了一次文档,VS2010的部署项目所提供的SQL2008不是R2版的,而这个参数是R2独有且必须的,其它版本加了这个参数之后,便无法安装,非微软文档之错,在此更正。

 

下面给出一个我写的批处理,希望给有相同需求的朋友一些提示或帮助。

@echooff

for/f "delims=[] tokens=2" %%i in ('ver')doset MyVer=%%i
for/f "tokens=2" %%i in ('echo %MyVer%')doset MyVer=%%i
for/f "tokens=1,2,3 delims=. " %%i in ( 'echo %MyVer% ')do(
set MajorVer=%%i
set MinorVer=%%j
set BuildNum=%%k
)
set MajorVer= %MajorVer%.%MinorVer%

if /I %MajorVer% == 5.1 (
GOTO XP
)
if /I %MajorVer% == 5.2 (
GOTO 2003
)
if /I %MajorVer% == 6.0 (
GOTO Vista
)
if /I %MajorVer% == 6.1 (
GOTO STARTSETUP
)


:XP
set INSTALLER45="WindowsInstaller4_5\WindowsXP-KB942288-v3-x86.exe"
echo 正在安装 Windows Installer4.5...
%INSTALLER45%
/quiet /norestart /nobackup /passive
goto STARTSETUP

:
2003
set INSTALLER45="WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x86.exe"
echo 正在安装 Windows Installer4.5...
%INSTALLER45%
/quiet /norestart /nobackup /passive
goto STARTSETUP

:Vista
set INSTALLER45="WindowsInstaller4_5\Windows6.0-KB958655-v2-x86.MSU"
echo 正在安装 Windows Installer4.5...
%INSTALLER45%
/quiet /norestart /nobackup /passive
goto STARTSETUP

:STARTSETUP
set DOTNETFX40="DotNetFX40\dotNetFx40_Full_x86_x64.exe"
set DOTNETFX40ZH="DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe"
set SQL2008="SqlExpress2008\SQLEXPR32_x86_CHS.EXE"

echo 正在安装 dotNetFx40...
%DOTNETFX40%
/lang:ENU/norestart /passive
%DOTNETFX40ZH%
/norestart /passive

echo 正在安装 SQLserver 2008 Express...
%SQL2008%
/qs /ACTION=Install /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM"/SQLSYSADMINACCOUNTS="NT AUTHORITY\SYSTEM"/AGTSVCACCOUNT="NT AUTHORITY\Network Service"

你可能感兴趣的:(sqlserver)