SQL Server的有效安裝 (轉)

worldblog發表於2007-12-14
SQL Server的有效安裝 (轉)[@more@]

  總是試圖使它的儘可能地簡單順暢, SERVER 2000的安裝也不例外。你從安裝光碟的x86setup夾啟動setupsql.exe、在安裝對話方塊中填入一些細節後,幾分鐘內,安裝將在沒有介入的情況下繼續。你甚至可以成功的安裝 2000而不用明白那些選擇意味著什麼——只需在大多數安裝對話方塊中點選“下一步”。然而,我強烈建議你不要如此輕率地對待安裝;留意每一個選項並且確保你完全理解你所作的每個選擇的影響。一些低劣的決定,比如錯誤的排序規則設定,可能很難被修復;其他的,比如接受預設的身份驗證,可能建立了。

 :namespace prefix = o ns = "urn:schemas--com::office" />

  讓我們看一些有關標準安裝的重點,包括例項、安全性、排序規則和庫。然後讓我們探索無人值守和安裝的高階選項。

 

例項

當你開始安裝時,經常執行標準安裝(與遠端或無人值守安裝相比)。你setupsql.exe來啟動安裝嚮導。在開始的兩個對話方塊——歡迎和機器名——之後,你需要對你的例項配置作選擇。SQL Server 2000支援在一臺機器上安裝多個SQL Server的例項。安裝程式顯示兩個對話方塊來給你安裝例項的選項。

首先,安裝選擇對話方塊顯示了讓你選擇是否安裝一個新的例項或者升級一個已經存在的安裝。如果你選擇安裝一個新的例項,你將看到“例項名對話方塊”顯示出來。你可以指明一個例項名或選擇預設來安裝一個預設例項——如果預設例項還未安裝在機器上。

在做有關安裝例項的選擇時你需要考慮幾件事。如果機器上沒有預設例項、你打算在同一臺機器上使用SQL Server 2000和7.0,確信你沒有將SQL Server 2000作為預設例項安裝。SQL Server 7.0不支援命名例項,所以它必須成為預設例項。除了解除安裝和重新安裝SQL Server,你不能把命名例項改為預設例項或者相反。你同樣也不能在例項安裝後更改例項名。然而,你可以在安裝SQL Server 2000後再安裝SQL Server 7.0——如果你還沒有安裝一個預設例項的話。

如果一個SQL Server 7.0的安裝已經存在,你可以將它升級——透過在安裝選擇對話方塊中選擇升級路徑並在後一個對話方塊中說明你想要升級預設例項。然而,SQL Server 2000將成為預設例項,SQL Server 7.0在這臺機器上將不復存在。要兩個版本都保留,把SQL Server 2000作為一個命名例項來安裝。

安裝完SQL Server 2000後,你可以使用和恢復、分離和連線、資料轉換服務或者複製嚮導來把SQL Server 7.0的資料庫調到SQL Server 2000中來。注意,當你升級一個先前的版本到SQL Server 2000時,無論選擇何種方式,你不能對資料庫同樣的複製指明超過一個的安裝,所以每個安裝必須維護它自己的每個資料庫複製。

另一個考慮涉及SQL Server 7.0被稱為“版本切換”的特性,它讓SQL Server 7.0與SQL Server 6.5共存於同一臺機器。但是,同時只有一個安裝可以是活動的,另一個是靜止的。當你呼叫版本控制,它啟用靜止的安裝並使活動的那個停止活動。如果機器上包括一個SQL Server 6.5的安裝——它沒有以版本控制的形式和SQL Server 7.0共存,安裝程式要求你選擇兩個選項之一:升級SQL Server 6.5到SQL Server 2000的預設例項並且在兩個版本間保持一個版本控制;升級到SQL Server 2000的命名例項。和從SQL Server 7.0升級不同——它覆蓋了當前的安裝,6.5的安裝保留在中——不管你為升級到2000選擇何種路徑。

如果7.0和6.5都已安裝並以“版本控制”的形式共存在同一臺機器中,而且你不想升級已存在的安裝,你可以安全地在同一臺機器上安裝2000的命名例項並且在同一臺機器上使用所有三個版本。然而,以版本控制形式共存的同時只有一個版本可以執行,而所有命名例項可以同時執行。

在說明了你的例項選項後,我們來到安裝型別對話方塊。

 

自定義安裝

  在安裝型別對話方塊中,安裝嚮導要求你在3個安裝型別中作選擇:典型、最小和自定義。如果你選擇典型或者最小,SQL Server對和子元件、排序規則和網路庫都使用預設選項。因為典型安裝會潛在地引起棘手的問題,我強烈建議始終選擇自定義——即使你認為預設滿足你的安裝需求。一些以前提及的選項——特別是排序規則——在安裝後如果發現不滿足需求是非常難以更改的。自定義安裝讓你再次檢查那些選項。

 

安全

  在安裝過程中,你在2個對話方塊中說明和安全相關的資訊:服務賬號和驗證模式。在服務賬號對話方塊裡,你填入SQL Server和SQL Server Agent服務的服務賬號細節。每個服務使用在對話方塊中說明的賬號來被操作調入,並且在中執行於這個賬號的安全上下文裡。比如:當你備份到一個裝置,SQL Server檢查你用來登入到SQL Server的登入是否具有適當的“備份資料庫”。然而,建立備份檔案裝置並寫入,SQL Server必須在磁碟或者網路共享中建立一個檔案,這個操作使用SQL Server服務賬號的安全上下文。

  同樣的,SQL Server Agent服務在SQL Server Agent服務賬號的安全上下文下在SQL Server、作業系統或網路中執行過程。雖然一個在本機不具有管理許可權的賬號可以啟動SQL Server 服務,把SQL Server 服務賬號加入到本地管理員組是個好主意。否則,你需要額外地把所有所需的許可權授權給該帳號,還需要授權該帳號合適的網路許可權。

  而如果你試圖透過一個機器上不具有管理員許可權的服務賬號來啟動SQL Server Agent,它甚至無法啟動。而且如果SQL Server Agent在網路上的其他機器上執行操作,比如複製或者多工作,你應該使用一個在其他機器上具有適當許可權的域賬號。比如在一個包含3臺SQL Server機器的單域多伺服器環境中,一臺主伺服器控制目標伺服器上的自動活動。因為雙方(主伺服器和目標伺服器)需要相互通訊,你需要確保主伺服器上的SQL Server Agent服務賬號在目標伺服器上具有適當的許可權,反之亦然。配置這樣一個環境的最簡便方法就是建立一個域賬號,使它在所有伺服器上成為本地管理員組的成員,並且透過該帳號來呼叫所有的SQL Server Agent服務。

  在身份驗證模式對話方塊中,你可以選擇是否只允許身份驗證登入(Windows身份驗證模式)或者Windows和SQL Server兩者登入(混合模式)。你也可以為sa(System Administrator)的SQL Server登入指定一個密碼。Windows身份驗證模式是預設的和最常用的推薦安全模式。然而,為安全起見,我建議你選擇混合模式並且為sa賬號提供一個密碼,在安裝完成和處理完一些其他的安全專案後,再把驗證模式改為Windows身份驗證模式。如果你選擇Windows身份驗證模式作為你的伺服器的安全模式,安裝過程把sa登入建立為無效並且沒有密碼(因為SQL Server身份驗證模式是無效的)。你可以在安裝後更改sa的密碼——我強烈建議你這麼做——但是一開始就選擇Windows身份驗證模式是危險的,因為你可能忘了更改密碼或者使用空密碼,以為sa已經失效。

  無論你選擇何種模式,安裝程式都為BUILTINAdministrators組建立一個Windows身份驗證的登入,它對映到本地機器的管理員組。這個登入的建立意味著所有本地管理員組的成員,包括域組域管理員,都是你的SQL Server的員(sysadmin)角色的成員。給予網路和本地管理員在SQL Server上的毫無限制的許可權並不總是一個好主意,因為這引入了安全風險,這樣一來你可能決定從SQL Server 的sysadmin角色中移除BUILTINAdministrators,或者你可能從SQL Server中完全移去這些自動建立的登入而為a成員組用sysadmin身份建立一個登入——不是員。

  如果你決定遵從上述這些建議,這樣做就夠了:首先,為DBA成員組用sysadmin身份建立一個登入,然後刪除BUILTINAdministrators登入。如果你的伺服器的身份驗證模式時Windows而且你在為DBA建立登入以前刪除所有具有sysadmin資格的登入,你會發現你自己被鎖在了SQL Server之外,無法執行管理任務——如:建立新的登入。如果你落入了這個陷阱,你仍然可以透過把登錄檔HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server例項名MSSQLServerLoginMode的鍵值更改為2,來把SQL Server身份驗證的模式改為混合模式,修改好後重新啟動SQL Server服務即可。

  雖然透過登錄檔可以控制SQL Server的登入模式是方便的,它也有個缺點。任何人只要具有編輯登錄檔鍵值的許可權,包括網路和本地管理員,都可以更改SQL Server的身份驗證模式。如果你用Windows身份驗證模式來安裝SQL Server,sa是失效的但是仍然具有一個空白的密碼。如果接著你更改SQL Server身份驗證模式到混合模式(這就使sa登入有效),任何人都可以作為sa登入。所以,絕對確保你一完成安裝就更改sa密碼或者在安裝過程中選擇混合模式並且為sa提供一個密碼。

 

排序規則

  接下來,你需要選擇排序規則設定。SQL Server 2000中的排序規則(Collation)設定用來管理和語言相關的行為、名稱和列的值的唯一性,以及排序規則(sorting rules)。在排序規則設定對話方塊裡,你說明排序規則並在SQL Server排序規則和Windows排序規則兩者之間選擇其一。如果你需要和以前SQL Server版本的向後相容性,選擇SQL Server排序規則——比如,如果你打算在一個早期版本的SQL Server和SQL Server 2000之間使用複製。否則,選擇Windows排序規則。SQL Server 2000的排序規則設定,不管是Windows或是SQL Server,合併了在先前版本中的3個獨立的設定:字符集,排序次序和Unicode排序規則。除了整合舊的3個設定到一起外,SQL Server 2000在排序規則中還提供了比以前版本更為強大的靈活性。

  在你安裝SQL Server 2000時選擇的排序規則決定了系統資料庫的排序規則設定。要在安裝後更該系統資料庫的排序規則設定,你需要指令碼化所有你的系統物件(比如:登入,訊息,工作)並且執行rebuildm.exe,它用新的排序規則重建了所有的系統資料庫。然而,你不必先匯出使用者資料庫中的所有資料再在執行完rebuildm.exe後把他們再匯入——就像你再SQL Server 7.0中所作的那樣。你只須重新連線使用者資料庫到SQL Server。你可以用不同於預設伺服器的排序規則(這是模板系統資料庫的)的排序規則配置你的使用者資料庫,或者甚至用不同於伺服器設定的排序規則連線或恢復一個資料庫。你可以以後修改使用者資料庫的預設排序規則。對於特定的一列,你可以指定不同於預設的資料庫排序規則的一種排序規則;你甚至可以稍後修改列的排序規則——如果該列上沒有建立的話。

  雖然在排序規則方面SQL Server 2000是靈活的,不要低估了你在安裝時作的選擇。正如我前面所言,伺服器的排序規則應用到所有的系統資料庫並且決定了記錄在系統資料庫中所有物件(如登入名,資料庫名)的排序規則。進一步而言,tempdb的排序規則也是你在安裝過程中選擇的伺服器排序規則。當你建立一個臨時表,表的列使用tempdb的排序規則——除非你在每列的定義裡指明COLLATE 資料庫預設

 

網路庫

  在說明了排序規則設定後,你來到了網路庫對話方塊。網路庫是客戶機應用程式用來和SQL Server通訊的。客戶機和SQL Server都必須有至少一個匹配的網路庫,透過它兩者可以通訊。在網路庫對話方塊中,你設定SQL Server將會用來和客戶機通訊的網路庫。

  在SQL Server 6.5中,只有命名管道和多協議允許Windows身份驗證;所有其他網路庫只允許SQL Server身份驗證。這樣一來,對於SQL Server 6.5來說,你想要支援的登入型別時你選擇網路庫的一個因素。進一步來說,只有多協議允許資料,所以如果你SQL Server 6.5支援資料加密,你就不得不選擇這個網路庫。在SQL Server 7.0中,所有網路庫支援Windows身份驗證,在這個意義上你就更加靈活,但是多協議仍然是唯一允許資料加密的網路庫。

  在SQL Server 2000裡,你可以透過使用SQL Server 網路工具和SQL Server客戶機網路工具的安全套接字層(Secure Socket Layer,)來對所有網路庫強制加密,這樣一來,加密因素不再決定網路庫的選擇。同樣,在SQL Server 2000裡,多協議不支援命名例項方案(伺服器名例項名),這樣的話,當你使用命名例項時,多協議也不是個好的選擇。SQL Server 2000中最通用的網路庫大概是套接字吧。它提供了良好的,允許Windows身份驗證,而且你可以在需要時對它進行強制SSL加密。

  大多數使用SQL Server早期版本的使用者知道SQL Server的預設TCP埠是埠1433。當使用預設埠時,客戶機連線除了伺服器名或者不需要提供埠號。然而,SQL Server 2000支援多個例項,這無法統統使用同樣的埠號。所以當你安裝一個命名例項時,安裝程式建議把0作為埠號。埠號為0意味著當SQL Server第一次啟動時,它動態地選擇一個空閒的埠號並且把它永久保留或者直到你稍後手工修改它為止。那麼客戶機連線如何繼續透過僅僅提供伺服器名稱/IP地址+例項名而不用指定埠號找到SQL Server呢?SQL Server 2000中的一個器服務監聽埠1433上的客戶機請求,然後透過檢測請求中的例項名並把它和例項的埠號匹配,再把該請求重定向到適當的例項。

 

無人值守和遠端安裝

  現在我們的標準安裝已經完成,讓我們討論一下無人值守安裝。Setupsql.exe程式讓你記錄下一個應答檔案,它包括了你在安裝程式對話方塊中常選的對於各種安裝選項的所有回答。稍後,你能夠透過呼叫以該應答檔案作為引數的setupsql.exe命令來執行一個安裝。這種無需任何使用者干預的安裝型別被稱為無人值守安裝。

  要準備應答檔案,先啟動安裝程式,在安裝選擇對話方塊中選擇高階選項,在對話方塊中選擇選取“記錄無人值守.ISS檔案”。安裝程式會指導你完成常規的安裝對話方塊,其中你可以填入所有你想要記錄的選項。當你完成後,安裝程式在WINNT資料夾下建立一個名為setup.iss的檔案。

  要啟動一個無人值守安裝,執行setupsql.exe程式,用-s作為執行安靜安裝的引數、-fl引數指定一個應答檔案。例如,要啟動一個安靜的、無人值守的安裝——安裝完成後不通知你,你可以使用以下命令:

  setupsql.exe –s –fl setup.iss

  如果你想在安裝完成時得到通知,從命令列執行如下setupsql.exe程式,或者把它寫入一個批處理檔案中:

  start /wait setupsql.exe -s –fl setup.iss

  直到安裝結束,控制才會傳遞到下一條命令。當你從批處理檔案啟動安裝,而這個檔案又包括其他依賴於安裝的行為時,使用start /wait選項是特別重要的。例如,假設你要為一個名為INST1的命名例項執行無人值守安裝來建立批處理檔案,然後啟動SQL Server服務,再執行一個用來建立資料庫及其物件(如:表、過程)的sql指令碼。這個批處理檔案看起來可能像這樣:

  start /wait D:X86Setupsetupsql.exe –s –fl C:WINNTsetup.iss

  start MSSQL$INST1

  OSQL /E /I “c:datascriptscreateappdb.sql”

  如果你不使用start /wait選項,控制從安裝一開始就移到了批處理檔案的第二條命令,而這條NET START命令試圖啟動一個還不存在的服務。

  對一個無人值守安裝進行故障排除要比對待標準安裝的故障排除更需要慎重對待。標準安裝往往在安裝程式遇到問題時透過顯示一個包含出錯資訊的對話方塊(並伴有響亮的警告聲)來通知你。而無人值守安裝只是簡單地終止,且沒有互動的通知。

  要了解如何對無人值守安裝進行故障排除,讓我們來看一組我遇到過的問題。假設你已經在伺服器上完成了另一個產品的安裝,然後你試圖執行一個SQL Server的無人值守安裝。安裝程式檢測到在前一個安裝結束後伺服器尚未重啟,於是放棄安裝,同時沒有任何資訊提示。如果你保持工作管理員視窗開啟,你會注意到setupsql.exe 程式不活動,所以SQL Server沒有被安裝。你也應該檢查日誌檔案。一旦安裝成功,WINNTsetup.log檔案應該顯示0作為出錯程式碼;然而,在我描述的情景中,他很可能顯示-1,這表示一個基本錯誤。你也應該看一下出錯資訊。

  當執行無人值守安裝時,我遇到過多次的另一個錯誤是“對話方塊次序紊亂”。在我呼叫安裝程式後不久我就意識到這一問題的存在——那是在我開啟工作管理員並看到setupsql.exe雖然在執行但是沒有像正常的無人值守安裝那樣呼叫和釋放程式。同時,安裝程式通常在Program FilesMicrosoft SQL Server下建立的資料夾也沒有被建立。Setupsql.exe程式看來並沒有佔用或者I/O資源,只是在大約10分鐘後消失了。Setup.log檔案顯示一個-12的錯誤程式碼而sqlstp.log檔案顯示沒有錯誤——實際上,它看來還未完成。Sqlstp包含了不完整的注意事項,只是一條訊息——Begin Action:DialogShow。BOL顯示了以下有關錯誤程式碼-12的資訊:“對話方塊次序紊亂。這是一個常見錯誤,由在安裝初始化檔案(Setup.iss)檔案中的一個對話方塊次序紊亂所引起。這是由於Setup.iss檔案建立過程中的系統問題所產生。”足以確認,在我重新對Setup.iss檔案排序後,無人值守安裝成功完成。

  除了完全安裝,你還可以執行SQL Server 2000服務包的無人值守安裝。要把服務包應用到預設例項上,從服務包的安裝目錄呼叫setupsql.exe程式,指明應答檔案為位於服務包安裝目錄根目錄下的sql2kdef.iss。例如:如果服務包安裝檔案位於c:sql2ksq2下,執行入下命令:

  start /wait c:sql2ksp2x86setupsetupsql.exe –s –fl c:sql2ksp2sql2kdef.iss

要把服務包應用到命名例項上,使用sql2knm.iss應答檔案,但是首先修改檔案中的下列兩行來對應正確的命名例項:

  InstanceName = INSTANCE_NAME

  NMPPipeName=.pipeMSSQL$INSTANCE_NAMEsqlquery

  另一個高階選項——遠端安裝——讓你在一臺遠端的電腦上安裝SQL Server 2000。你可以從一臺本地的電腦上手工記錄下一個setup.iss檔案,把它複製到遠端電腦上,在啟用setupsql.exe程式和在遠端電腦上的setup.iss檔案。然而,你可以替自己省些麻煩——透過在本地電腦上執行setupsql.exe程式,在電腦名對話方塊中選擇遠端電腦,指明你想要安裝到的電腦名。當你點選下一步時,遠端安裝資訊對話方塊會顯示出來。

  首先你要提供帳號細節(使用者、密碼、域),到目標資料夾的UNC路徑和源安裝檔案的UNC路徑。接下來,安裝程式將指引你完成常規安裝對話方塊並根據你的選擇記錄下setup.iss檔案。接著,程式複製setup.iss檔案到目標電腦的WINNT資料夾下,再用複製的setup.iss檔案來啟用setupsql.exe。

  如果你在目標電腦上開啟工作管理員,你會看到setupsql.exe程式在安裝過程中呼叫和釋放其他程式。在本地電腦上,安裝程式顯示遠端安裝正在進行中,並且會在完成時通知你。

 

最後的話

  雖然基本安裝看來簡單,你仍需隊與你所選擇的安裝選項給予密切注意,並且完全理解它們。良好的安裝選擇為執行和管理SQL Server提供了一個堅實的基礎。而如果你認為執行無人值守安裝和遠端安裝聽起來複雜的話,我希望這篇文章有助於你對它們加深瞭解。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993528/,如需轉載,請註明出處,否則將追究法律責任。

相關文章