每当这种情况发生的时候,我总会心里默念道:杯具啊,这辈子也装不完了。因为sql server的安装还是比较复杂的,要先安装.net、windows installer,在正式安装的过程中还要交互的填写各种参数,当然这个还不包括拷贝3gb多的安装文件的时间。在经历了几次这样的悲剧之后,我果断的意识到必须研究一下写个脚本改变这个残酷的现实。
前段时间会学校毕业答辩我终于暂时离开了繁重的工作,能找个时间研究一下脚本了。刚开始实验这个脚本的时候,由于同学喊我打游戏,我就偷懒没准备实验环境,直接用我的本子跑了安装程序,然后就切到游戏去了。结果后来还造成了我本子的系统出现了很难解释的错误,详细的情况我写在上篇blog里了,悲剧的《bits服务异常引发cpu满载》。惨痛的教训告诉我们,作实验还是要虚拟机里做比较安全。
实验环境:
在vmware里面装了个windows server 2003 企业版 x86 sp2,用的是sql server 2008 r2。安装文件解压后保存虚拟机快照,保存下这个纯净的系统环境,这样可以随时还原回来,重新实验。
自动化脚本:
setup.exe /qs
setup.exe /qs /action=install /iacceptsqlserverlicenseterms
/features=sqlengine,is,ssms /instancename=mssqlserver
/installsqldatadir=”d:\sqlserverdata” /agtsvcaccount=”system”
/agtsvcstartuptype=”disabled” /sqlsvcaccount=”system”
/sqlsvcstartuptype=”automatic” /issvcaccount=”system”
/issvcstartuptype=”automatic” /issvcaccount=”local service”
/issvcstartuptype=”automatic” /sqlsysadminaccounts=”hanxu”
pause
整个脚本最主要的部分就是上面的两段,其实安装并把参数传递进去原本只需要一行。但是由于sql server的安装过程比较特殊,所以需要分为两行来写。真正的安装需要先安装.net补丁和windows installer的补丁,在安装完毕windows installer之后整个程序会中断。所以第一行的那个不带很长参数的就是为了触发安装.net补丁和windows installer的补丁。这两个补丁被安装之后程序会中断,所以这里也不需要附带很长的参数。第二行那个带很长参数的才是真正的sql server的安装过程。
在这个很长的一大串参数里面,其实归纳一下也还是有规律的。
首先就是/qs /action=install /iacceptsqlserverlicenseterms,这些参数用于设定安装模式、同意授权协议。
然后,/features=sqlengine,is,ssms /instancename=mssqlserver /installsqldatadir=”d:\sqlserverdata”这些参数设定安装的组件和实例信息。
这里有一点的觉得需要说明一下的,脚本安装时支持设定windows和sql认证的,如果什么参数都不填就是默认windows认证。我这里强烈建议用windows认证方式,如果需要sql认证可以等安装完毕之后再设定验证模式,如果在脚本里面设定sql验证的话,里面会记录有sa账户密码。如果脚本丢失,大量的机器都是用这个脚本安装的,那个就不用解释了,悲剧……
再下面的一段就是纯粹的服务设定了,sql server的很多功能都是以服务的方式运行的,所以就要给他们赋予相应的启动方式(自动、禁止等)。还有就是对服务给予适当的启动账户(系统账户、本地服务、域权限等)。权限给低了许多权限不够,权限给高了会影响安全性,这个也要综合考虑。
最后就是/sqlsysadminaccounts=”hanxu”,给sql的sysadmin添加一个账户用于登陆。
关于其他优化:
1.sql server的安装盘里面包含了x86、x64、ai64这3个版本,如果只用到其中的一个构架的版本,可以把存放其他版本安装文件的个文件夹给直接删了,然后再打包,这样能精简安装包。
2.我这个实力脚本式对应sql server 2008的,如果是之前的版本可能需要打补丁。可以把补丁文件也整合进脚本,然后走脚本自动安装。我实验过一个脚本安装了sql server 2008和它的sp1补丁,这个很方便。
3.sql server不同版本之间的脚本在参数上有小的差异,这里推荐用虚拟机快照保存最初状态,然后慢慢反复尝试。如果有错误,脚本会在命令行里给出错误参数。详细的参数查询可以使用/help命令或者去msdn查询。
用了自动化脚本还是很爽的,原来手动安装半小时的活,现在点一下鼠标就行了。甚至可以给脚本加的自动重启的命令,点下鼠标,半小时之后来直接就能用了。话说为了写这个脚本,我用虚拟机实验了也就几十、二十次的样子,通宵了一个晚上,不过对于我这种经常大量安装任务的人来说,可以说是一次投资终身受用。这里分享给大家,希望对大家有所帮助。