在工作中,經常被要求一天安裝個10臺、8臺的SQL Server。
每當這種情況發生的時候,我總會心里默念道:杯具啊,這輩子也裝不完了。因為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查詢。
用了自動化腳本還是很爽的,原來手動安裝半小時的活,現在點一下鼠標就行了。甚至可以給腳本加的自動重啟的命令,點下鼠標,半小時之后來直接就能用了。話說為了寫這個腳本,我用虛擬機實驗了也就幾十、二十次的樣子,通宵了一個晚上,不過對于我這種經常大量安裝任務的人來說,可以說是一次投資終身受用。這里分享給大家,希望對大家有所幫助。