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