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