程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 為SQL Server 2005配置Windows即時初始化

為SQL Server 2005配置Windows即時初始化

編輯:關於SqlServer

問題

SQL Server 2005支持數據庫即時文件初始化(Instant File Initialization),這種即時文件初始化可以跳過清零數據的頁面,這樣做可以在執行一些操作,比如創建數據庫,增加文件到現有的數據庫中,手動、通過自動增長(autogrowth)或保存一個數據庫或文件組來增大現有數據庫文件時,減少時間。但是,我們如何確定SQL Server正在使用這個功能?

專家解答

在SQL Server以前的版本中,數據和日志文件一開始是通過在你執行之前提到的某項操作時,用零歸檔這些文件來初始化的。在災難備份和還原操作中,這是非常關鍵的,尤其是處理非常大的數據庫時。

對SQL Server而言,即時文件初始化已經引進了。而這所做的是,它跳過磁盤上的零數據,因此不重寫在磁盤上寫過的先前的數據。操作系統只分配磁盤空間,但是文件的內容實際上是原先在磁盤上寫的。這個功能對於運行在NTFS文件系統的Windows Server 2003或者Windows XP上的所有SQL Server 2005版本都適用。

即使它是可用的,你的實例也可能不能配置使用。要解決這個問題,你應該給你的SQL Server服務賬號或者SQLServerMSSQLUser$instancename這個本地組

SE_MANAGE_VOLUME_NAME的權限。SQLServerMSSQLUser$instancename這個本地組創建於你安裝SQL Server 2005並把SQL Server服務賬號加到這個數據庫中。要做到這些,服務賬號和本地組需要被授予“Perform Volume Maintenance Task”的本地安全權限。默認情況下,本地管理員組已經有這個許可,所以如果你的服務賬號已經是這個組的一員,那麼你沒必要去做什麼事情。

請注意,這只適用於數據文件而不適用於日志文件,所以如果你有大量的事務日志文件,而這些文件又作為你數據庫備份的一部分,那麼數據庫文件會即時創建而日志文件不會。日志文件在被寫回磁盤之前需要被清零。

注意事項

即使這個改進了autogrowth事件的文件增長性能,它不應作為正確排列你數據庫文件來達到最小化的替代方法。如果不能避免,使其自動增長。另外,當SQL Server服務在運行時,如果你把這個權限給服務賬號,那麼為了使這個功能生效你必須停止並重啟服務。你也可以通過運行gpupdate /force命令立即在安全策略中應用修改。

這樣做也有安全風險。存在這樣的可能性,那就是你會通過未授權的賬戶訪問磁盤上的非零數據。想像一個數據文件沒有在磁盤上清零的被刪除的數據庫!如果因為自由訪問控制列表(DACL)僅用於數據文件被SQL Server使用時而導致沒有自由訪問控制列表被定義在文件上,那麼任何用戶都可以訪問這些數據。如果披露已刪內容的可能性是受到關注的,那麼建議當自由訪問控制列表從SQL Server中分離時,在你的數據文件或備份上明確地使用受限制的自由訪問控制列表。

提示

配置你的SQL Server 2005實例來使用即時文件初始化。

在一個SQL Server 2005實例上,通過還原一個大型數據庫(任何大於100GB)來測試它。

在一個測試服務器上,不經過許可還原數據庫備份並且衡量還原的時間。

刪除這個還原的數據庫並停止SQL Server服務。

把“Perform Volume Maintenance Task”授權給SQL Server服務賬號並重啟服務。

再次還原數據庫備份並且衡量還原的時間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved