SQL 問題與解答日光節約時間、伺服器記憶體...等等

由 Nancy Michell 編輯

日光節約時間

問:美國為配合 2005 年能源政策法案 (Energy Policy Act of 2005),即將轉變日光節約時間 (DST),請問我是否要更新 SQL Server™?

答:不用。目前並不需要特定的 SQL Server 更新來支援 DST 的變更。SQL Server 的時間相關資料仰賴基礎作業系統,也就是說,只要作業系統的日期和時間正確,SQL Server 就會使用相同的值。為了配合即將到來的 DST 變更,您需要更新 Windows®,如 support.microsoft.com/kb/928388 中所述。所有 Windows Vista™ (已包含變更內容) 以前的 Windows 作業系統都必須更新,以符合 DST 的改變,其中也包括執行 SQL Server 的系統 (澳大利亞也正在進行某些變更。請參閱 support.microsoft.com/kb/912475)。

使用 Windows Vista 進行連接

問:我已經安裝 Windows Vista,而現在卻無法在系統上連接到 SQL Server 2005。我是本機管理員,過去曾經執行相同的連接作業,當時完全沒有任何問題。怎麼會這樣呢?

答:這是 Windows Vista 和尚未安裝 Service Pack 2 (SP2) 之 SQL Server 2005 的預期行為。Windows Vista 具有新的安全性模型 (使用者帳戶控制項),這會在本機管理員群組中設陷,鎖定您的成員資料,並要求您確認需要管理權限的作業。如果您按一下 [允許] 按鈕,您的認證以及管理員 Token 就會一起傳送給應用程式。SQL Server Management Studio (SSMS) 則不會顯示對話方塊,因為單純執行工具並不需要管理權限。問題在於 SQL Server 2005 系統管理員角色在預設的情況下,即包含作業系統的本機管理員群組,這也是過去您的帳戶用來存取 SQL Server 的群組。既然 Windows Vista 不傳送該權限,也就無法存取。

請注意,在未安裝 SP2 的情況下,Windows Vista 無法支援 SQL Server 2005,而且 SP2 具有一項工具可為您加入自己的帳戶。 若您仍在等待 SP2,這個修復方式非常簡單。您的個人 Windows 使用者帳戶必須加入 SQL Server 中,以您的情況而言是設定為系統管理員的角色。方法是以滑鼠右鍵按一下 [SQL Server Management Studio],再以管理員身分選取 [執行]。連接到 SQL Server,並將您的 Windows 帳戶加入系統管理員角色。請參閱《SQL Server 線上叢書》以取得運作方法的相關資訊。

有檢視的交易式複寫

問:如果我有已發行的檢視,並進行更新,我知道交易將會進行複寫。但如果我更新此檢視的基底資料表,是否會複寫交易呢?另外,如果我有已發行的資料表並建立其檢視,而我更新了檢視而非基底資料表,這樣又是否會複寫交易?

答:假設基底資料表設定為發行集的某個發行項 (也就是同時也設定複寫基底資料表),那麼該基底資料表的所有更新都會複寫。

在複寫檢視的時候,根據預設,複寫檢視時只會包含檢視的結構描述部分,或者檢視背後的程式碼,而不是其基礎資料 (除非是索引檢視)。如此一來,即使未經複寫,不論您在何時更新檢視 (在此例中指的是將檢視當作目標來執行 Data Manipulation Language (DML) 陳述式),其實真正更新的是基礎資料表的資料,而不是檢視。檢視只不過是查詢陳述式的邏輯儲存體,並未附加實體儲存體 (再次說明,除非您使用的是索引檢視)。

最大伺服器記憶體

問:我的電腦目前執行 Windows Server® 2003 和 SQL Server 2000,共有 5GB 的 RAM。假設我使用 /3GB 參數來增加使用者模式虛擬位址空間、用 /PAE 參數載入 Windows 核心的實體位置延伸 (Physical Address Extension,PAE) 版本,以及啟用 Address Windowing Extensions (AWE) 並設定為 1 (且在記憶體中啟用鎖定頁面)。在 AWE 已啟用的情況下,最大伺服器記憶體選項是否僅會設定資料快取的大小,或是會設定所有緩衝區快取的大小 (資料、處理序、工作階段...等等)?既然只有資料快取可以利用 AWE 對應記憶體,如果我將最大伺服器記憶體設定為 4GB,那麼資料快取是否僅會使用 1GB (由 AWE 對應的部分),或者可以運用這多出來的 1GB,並持續使用或在標準定址空間內與其他所有記憶體取用者競爭?

答:最大伺服器記憶體一律會限制整體緩衝集區大小;不過唯一可運用 AWE 對應記憶體的取用者,只有資料快取而已。

因此針對第一個問題,即使 AWE 已啟用,最大伺服器記憶體仍會限制整體緩衝集區,但是非資料快取的取用者則永遠不可使用任何 AWE 對應記憶體。

針對第二個問題,資料快取會使用 AWE 對應記憶體,加上在其他緩衝集區內、由 SQL Server 判斷為適用的記憶體;資料快取不受限於 AWE 記憶體,只是它正好是唯一可運用 AWE 記憶體的取用者而已。如果您不確定 /3GB 參數的功能,請參閱 Raymond Chen 的部落格

設定檔與效能

問:我有在實際的 SQL Server 2005 中執行鏡像作業。當我在資料庫電腦上啟動 SQL Server Profiler,並將追蹤資料寫入檔案時,我發現效能會急遽降低。為什麼會這樣?

答:效能是否降低,端視執行 Profiler 的位置。如果您在伺服器電腦上以互動方式執行,那麼 Profiler UI 會同時在伺服器上耗用記憶體和 CPU,因而影響效能。

若您是在工作站上以互動方式執行 Profiler,就需要在網路上傳遞事件資訊。這會影響輸送量。如果這個網路就是您用來進行鏡像的網路,則也會造成鏡像效能的影響。此外,如果您在網路共用上儲存 Profiler 的輸出,亦等於在網路上傳遞資料,並且會對效能產生負面影響。

減緩這些問題的最佳方式,或許是在執行要建立設定檔之執行個體的伺服器上,以非互動方式執行 Profiler,然後將輸出導向本機檔案。這仍會取用伺服器資源,但這種方法造成的影響通常最小。而且這也比 (記憶體內部) Profiler 追蹤的效果要好上許多。檔案追蹤可以更有效率的使用系統記憶體;它具有更大的緩衝區,且可以更有效的排清至磁碟中,此外,這不需要依賴外部處理序 (例如 SQL Server Profiler)。

最後,追蹤資料會在 Profiler 仍在進行設定檔作業時寫入磁碟檔案。透過共用追蹤檔案,其他人就能從遠端看到即時的設定檔資料。如果您以互動方式呼叫追蹤檔案,就表示您已手動叫用 Profiler,並於螢幕上檢視輸出。追蹤可以利用程式設計的方式建立,而看不到實際的結果,這就是為什麼我們應該以非互動方式執行。

您可以在本機目錄上建立共用,讓其他人存取該處的檔案,這通常不會有問題。如上所述,您不應該將追蹤輸出傳送到遠端共用的檔案,尤其當該檔案需要透過鏡像用的相同網路管道存取。

您也應該僅選取調查所需的必要事件組,盡量減少涉及的數量。至於追蹤檔案的位置,應選擇系統上最快速的磁碟機 (最好不要和 SQL Server 資料庫及交易記錄磁碟機相同)。若您仍然覺得效能嚴重降低,請將事件分割為兩個以上的追蹤,並分別以不同的硬碟為目標。即使追蹤的目標硬碟相同,仍可藉由分割,讓每個追蹤分別使用個別的緩衝區。詳細資訊請參閱 sp_trace_create 及《SQL Server 線上叢書》的其他相關主題。

叢集問題

問:我嘗試在執行 Windows Server 2003 的叢集上安裝 SQL Server,但每次嘗試都會出現錯誤訊息:「安裝程式在一或多個叢集節點上無法執行必要的作業」。而 sqlstp.log 中只出現:

Script file copied to '\\SERVER01\ADMIN$\SERVER01_MSSQLSERVER.iss' successfully.
Installing remote service (SERVER01)...
An error occured in the service create (SERVER01): 1069...

究竟發生什麼問題?

答:此處出現錯誤有幾項可能因素。安裝程式會在所有選取的節點上安裝 Windows NT® Service,以便透過遠端模式個別電腦上管理安裝程序。因此,您必須注意幾項可能遇到的阻礙。

第一,您的網域帳戶使用者可能有拒絕「以服務登入」權限的群組原則 (請記得網域原則會覆寫您的本機原則)。請確定您使用的帳戶沒有上述限制。

第二,您執行安裝程式的電腦登入帳戶,必須具備所有節點的管理員存取權,原因如下:主要安裝程序中需要所有電腦的遠端登錄存取權;安裝程式會將 cnvsvc.exe 複製到遠端電腦的 Windows 目錄;或者安裝程式會使用僅以登入帳戶權限來存取遠端電腦的標準 Windows API。基於上述原因,您都應該根據預設在所有模式中以管理員身分登入。

損毀修復計劃

問:我正在考慮是要使用資料庫鏡像 (非同步模式) 或是記錄傳送,為我的 SAP 資料庫實作損毀修復 (DR) 策略。我的實際執行與 DR 站台,將擁有 100Mb 寬頻連線,這並非鏡像工作階段專屬使用。連線將由不同鏡像工作階段共同使用,甚至還要與其他 DR 伺服器共用。

如果產生網路問題,導致登入記錄無法傳送到鏡像資料庫,是否會自動重試?

鏡像工作階段暫停時,是否會有任何保留期限?此外,除了系統檢視,是否有其他記錄資訊可以用來監視鏡像流量以及記錄檔記錄的傳輸?

答:首先讓我們來回答這個問題:為什麼會需要重試資料庫鏡像作業?您可以從兩方面來看:第一,若發生暫時性的網路問題,鏡像工作階段的狀態就會變成中斷連接。預設網路逾時值為 10 秒鐘,也就是說,記錄將無法從主體資料庫傳送到鏡像資料庫。在這樣的情況下,主體會繼續以「公開」模式執行,而交易則會在用戶端認可。一旦解決網路問題,鏡像工作階段就會自動重試,不需要使用者介入。該工作階段會試圖使用記錄檔記錄來趕上進度;夥伴電腦則會先同步處理,一旦跟上就會將狀態改變為已同步。

第二,如果有重做問題,鏡像工作階段狀態則為暫停。重做問題表示鏡像資料庫無法在自己的資料庫中認可記錄檔記錄。重做問題主要是由於找不到實體檔案,或者磁碟空間不足而導致。在這樣的情況下,主體會繼續以公開的模式執行,因此交易會在用戶端認可。手動修復鏡像伺服器的重做問題之後,鏡像工作階段會需要使用者介入:

ALTER DATABASE <db> SET PARTNER RESUME; 

至於保留期限,答案是不論鏡像工作階段是否已中斷連接或已暫停,都會保留記錄,直到工作階段還原,且從工作階段暫停到恢復之間的所有記錄都寫入鏡像伺服器為止。基本上,鏡像工作階段中斷連接或暫停時,將無法截斷主體的記錄,因為這樣有可能打斷記錄的重做鏈結。這表示主體的記錄會在未繫結的情況下成長,直到工作階段還原為止。因此,事實上鏡像工作階段並沒有保留期限的限制;唯一真正的條件約束是主體伺服器用來儲存記錄的磁碟空間,因為記錄無法截斷。

最後,並沒有特定記錄檔可用來監視鏡像。SQL Server 2005 專為此目的,提供名為 Database Mirroring Monitor 的 GUI 工具,讓系統管理員可以檢視與更新狀態,以及為多個主要效能指標上設定警告臨界值。藉此即可在鏡像執行不當時收到警示。與資料庫鏡像相關的主要效能疑慮,是記錄檔記錄能否即時處理。如需監視資料庫鏡像的詳細資訊,請參閱 Monitoring Mirroring Status 文章,網址為 msdn2.microsoft.com/fr-fr/library/ms365781.aspx

感謝下列 Microsoft IT 專家的技術協助: Chad Boyd、Sandu Chirica、Alan Doby、Kaloian Manassiev、Luciano Moreira、Ivan Penkov、Sivagaminathan Rajarethinam、Deborah To、Patrick Woodward、Buck Woody、Stanley Yau 以及 Warren Young。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.