配置SQL Server 2000選項
圖1以前,我們使用下面的命令為Northwind資料庫開啟trunc. log on chkpt.選項:SP_DBOPTION Northwind ,『trunc. log on chkpt.『, true設置好選項之後,我們可以通過Options選項卡或者下面的查詢檢查Northwind資料庫上這些選項設置是否成功:SELECT DATABASEPROPERTY (『Northwind『, 『IsTruncLog『)結果為1表示選項設置成了true;結果為0表示選項設置成了false。如果結果為NULL,它表示我們或者選擇了一個錯誤的選項,或者資料庫不存在。為了便於使用,Microsoft把trunc. log on chkpt.和Select Into/Bulk Copy選項換成了恢復模型設置。這種選項改變的目的在於確保資料庫管理員能夠充分理解在災難恢復策略中恢復模型選項的意義。SQL Server 2000為我們提供了三種資料庫恢復模型:simple(簡單恢復),full(完全恢復),bulk_logged(大容量日誌記錄恢復)。簡單恢復模型最容易操作,但它是最缺乏靈活性的災難恢復策略。選擇簡單恢復模型等同於把trunc. log on chkpt.設置成true。在這種恢復模型下,我們只能進行完全備份和差異備份(differential backup):這是因為事務日誌總是被截斷,事務日誌備份不可用。一般地,對於一個包含關鍵性數據的系統,我們不應該選擇簡單恢復模型,因為它不能夠幫助我們把系統還原到故障點。使用這種恢復模型時,我們最多只能把系統恢復到最後一次成功進行完全備份和差異備份的狀態。進行恢復時,我們首先要恢復最後一次成功進行的完全備份,然後在此基礎上恢復差異備份(差異備份只能把自從資料庫最後一次完全備份之後對資料庫的改動施加到資料庫上)。完全恢復模型把trunc. log on chkpt.選項和Select Into/Bulk Copy選項都設置成false。完全恢復具有把資料庫恢復到故障點或特定即時點的能力。對於保護那些包含關鍵性數據的環境來說,這種模型很理想,但它提高了設備和管理的代價,因為如果資料庫訪問比較頻繁的話,系統將很快產生龐大的事務日誌記錄。由於在這種模型中Select Into/Bulk Copy設置成了false,SQL Server將記錄包括大容量數據裝入在內的所有事件。最後一種恢復模型是大容量日誌記錄恢復,它把trunc. log on chkpt.設置成false,把Select Into/Bulk Copy設置成true。在大容量日誌記錄恢復模型中,大容量複製操作的數據丟失程度要比完全恢復模型嚴重。完全恢復模型記錄大容量複製操作的完整日誌,但在大容量日誌記錄恢復模型下,SQL Server只記錄這些操作的最小日誌,而且無法逐個控制這些操作。在大容量日誌記錄恢復模型中,數據文件損壞可能導致要求手工重做工作。 下表比較了三種恢復模型的特點。恢復模型優點工作損失表現能否恢復到即時點?簡單允許高性能大容量複製操作。收回日誌空間,使得空間要求最小。必須重做自最新的資料庫或差異備份後所發生的更改。可以恢復到任何備份的結尾處。隨後必須重做更改。完全數據文件丟失或損壞不會導致工作損失。可以恢復到任意即時點(例如,應用程序或用戶錯誤之前)。正常情況下沒有。如果日誌損壞,則必須重做自最新的日誌備份後所發生的更改。可以恢復到任何即時點。大容量日誌記錄允許高性能大容量複製操作。大容量操作使用最少的日誌空間。如果日誌損壞,或者自最新的日誌備份後發生了大容量操作,則必須重做自上次備份後所做的更改。 否則不丟失任何工作。可以恢復到任何備份的結尾處。隨後必須重做更改。在資料庫的Options選項卡中,我們可以從Model下拉列表框選擇Simple把恢復模型改成簡單模型。另外,Microsoft擴展了ALTER DATABASE命令,我們可以用它設置資料庫屬性。例如,用下面這個T-SQL命令可以把恢復模型設置為完全恢復模型:ALTER DATABASE Northwind SET RECOVERY FULLSQL Server 2000提供了把資料庫轉入單用戶模式的許多選項,它們都屬於那種最令人感興趣的隱藏選項。為了修正訛誤或其他數據問題,資料庫管理員常常要把資料庫轉入單用戶模式。當資料庫處於這種模式時,其它用戶將不能再訪問數據,從而使得管理員能夠在用戶訪問損壞的數據之前修正數據問題。在SQL Server 7.0中,在把資料庫轉入單用戶模式之前,我們必須確保所有用戶都已經斷開連接。對於一個高速OLTP資料庫系統,比如電子商務系統,斷開所有用戶的連接非常困難,因為就在我們斷開某個用戶的連接時,其他用戶還會連接資料庫。SQL Server 2000極大地改進了這個操作過程,我們可以給用戶一個指定的時間去完成他們的事務,然後由SQL Server自動斷開他們的連接。另外,我們也可以在不提供任何延遲時間的情況下斷開所有的連接。把資料庫轉入單用戶模式的方法之一是在資料庫的Options選項卡選中Restrict Access檢查框,然後選擇Single user。另外,Microsoft擴展了ALTER DATABASE命令,使它能夠把資料庫轉入單用戶模式,語法如下:ALTER DATABASE Northwind SET SINGLE_USER執行這個命令之後,SQL Server等待所有的資料庫連接,讓它們完成各自的事務。在這種狀態下,所有請求連接資料庫的用戶都將接收到圖2顯示的錯誤信息,並被重定向到他們各自的默認資料庫(通常是Master資料庫)。圖2的錯誤信息意味著資料庫處於凍結狀態,直至所有用戶斷開連接。如果目標伺服器或者發出命令的用戶沒有設置query timeout參數,客戶端可能無限期地等待查詢完成,直至所有的連接被斷開。在Query Analyzer中,我們可以在Options屏幕(選擇菜單Tools,Options)的Connections選項卡裡面指定超時秒數。在單用戶模式下,只有發出ALTER DATABASE命令的用戶可以保持連接。
圖2另外,我們還可以用ROLLBACK IMMEDIATE命令斷開所有打開資料庫連接的用戶。但我們不能在Enterprise Manager中使用這個命令,而是應該用Query Analyzer執行,例如:ALTER DATABASE Northwind SET SINGLE_USER WITH ROLLBACK IMMEDIATE執行這個命令之後,SQL Server立即斷開所有的連接並回退它們的事務。所有正在執行事務的用戶都會接收到一個連接錯誤,而且他們不能再連接資料庫。我們可以指定一個時間選項,讓SQL Server在斷開用戶的連接之前等待用戶完成他們的事務。這個選項是可選的,它用ROLLBACK AFTER關鍵詞指定,如下面的命令所示:ALTER DATABASE Northwind SET SINGLE_USER WITH ROLLBACK AFTER 20 SECONDS執行這個命令之後,SQL Server先等待20秒鐘,然後斷開所有的連接並回退它們的事務。在這個過程中,SQL Server不再接受新的連接請求,它是一個資料庫級的伺服器暫停。在這個20秒之內,所有企圖連接資料庫的新用戶都將接收到圖2顯示的錯誤信息。如果執行這個命令的時候不存在已經連接的用戶,資料庫將立即轉入單用戶模式。Enterprise Manager的資料庫Options選項卡中,最後一個新的配置選項是Compatibility Level,如圖1所示。要設置這個選項,我們只需從Compatibility Level下拉框選擇一個合適的兼容級別。在這個下拉框中,SQL Server 2000由80代表,7.0由70代表,6.5由65代表。兼容級別選項決定了某些資料庫查詢操作的執行方法。由於SQL Server的關係引擎在發展變化,某些查詢的結果在不同的版本之間可能不同。例如,如果我們執行下面這個查詢:SELECT DATALENGTH(『『)依賴於我們為資料庫設置的兼容級別是SQL Server 2000、7.0或者6.5,上述查詢可能得到兩個不同的結果。對於SQL Server 2000或7.0資料庫,返回結果是0,因為SQL Server 2000和7.0把空字元串視為真正的空;在SQL Server 6.5兼容模式下,返回結果是1,因為SQL Server 6.5把空字元串視為一個空格。SQL Server 7.0也有這個兼容級別選項,但它只能通過sp_dbcmptlevel存儲過程訪問。綜上所述,在SQL Server 2000中,Microsoft對伺服器和資料庫配置方法進行了幾個實質性的改動。不要輕視所有本文討論的選項和其他SQL Server配置選項——即使是一個小小的改動,它也可能對性能產生重大的正面或負面影響。在調整SQL Server的配置選項時,你最好使用Performance Monitor之類的伺服器監視工具,確保選項調整不會對伺服器性能產生負面影響。(松下客 2001年06月11日 21:11)
推薦閱讀: