我在部署项目的时候,需要用批处理无人值守安装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="" /SQLSVCPASSWORD="" /SQLSYSADMINACCOUNTS="" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /IACCEPTSQLSERVERLICENSETERMS
在我多次安装均出错的情况下,先解压了安装包,再进行命令行下手工尝试,得到错误为“无法识别指定的设置“IACCEPTSQLSERVERLICENSETERMS”。”
我尝试删除了 /IACCEPTSQLSERVERLICENSETERMS 参数。出人意料的竟然成功了。。
这,这简直就是坑爹啊!!!
【PS:经560889223提醒,我专门又查了一次文档,VS2010的部署项目所提供的SQL2008不是R2版的,而这个参数是R2独有且必须的,其它版本加了这个参数之后,便无法安装,非微软文档之错,在此更正。】
下面给出一个我写的批处理,希望给有相同需求的朋友一些提示或帮助。
- @echo off
- for /f "delims=[] tokens=2" %%i in ('ver') do set MyVer=%%i
- for /f "tokens=2" %%i in ('echo %MyVer%') do set 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"
原文链接:http://www.cnblogs.com/gsyifan/archive/2011/07/26/2117095.html
【编辑推荐】