資料庫檔案初始化

初始化資料和記錄檔時,會覆寫先前已刪除檔案留在磁碟上的任何現有資料。當您執行下列其中一項作業時,資料和記錄檔會先以零填滿來進行初始化:

  • 建立資料庫。

  • 將檔案、記錄或資料加入現有的資料庫中。

  • 增加現有檔案的大小 (包括自動成長作業)。

  • 還原資料庫或檔案群組。

檔案初始化會使得這些作業耗時更久。不過,初次將資料寫入檔案時,作業系統並不需要以零填滿檔案。

立即檔案初始化

在 SQL Server 中,資料檔可以立即初始化。這可讓上述檔案作業快速執行。立即檔案初始化會回收使用過的磁碟空間,但不以零填滿該空間。而是在將新資料寫入檔案時,覆寫磁碟內容。記錄檔無法立即初始化。

[!附註]

只有 Microsoft Windows XP Professional 或 Windows Server 2003 或更新版本才有立即檔案初始化功能。

唯有當 SQL Server (MSSQLSERVER) 服務帳戶獲授與 SE_MANAGE_VOLUME_NAME 之後,才有立即檔案初始化功能。Windows Administrator 群組的成員具有此權限,而且可以將其他使用者加入「執行磁碟區維護工作」安全性原則中,將權限授與這些使用者。如需有關指派使用者權限的詳細資訊,請參閱 Windows 文件集。

當啟用 TDE 時,無法使用立即檔案初始化功能。

安全性考量

因為只有在新資料寫入檔案時才會覆寫已刪除的磁碟內容,所以已刪除的內容可能會由未獲授權的主體存取。資料庫檔案附加至 SQL Server 的執行個體時,檔案的判別存取控制清單 (DACL) 來減輕此資訊洩漏的威脅。此 DACL 只允許 SQL Server 服務帳戶和本機管理員存取檔案。不過,在卸離檔案之後,沒有 SE_MANAGE_VOLUME_NAME 的使用者或服務也可以存取它。在備份資料庫時,也存在類似的威脅。如果備份檔沒有利用適當的 DACL 加以保護,則已刪除的內容也會變成可供未獲授權的使用者或服務使用。

如果擔心已刪除的內容會被洩漏出去,您應該執行下列其中一項或兩項動作:

  • 務必確定任何已卸離的資料檔和備份檔有限制性的 DACL。

  • 從 SQL Server 服務帳戶撤銷 SE_MANAGE_VOLUME_NAME,來停用 SQL Server 執行個體的立即檔案初始化。

[!附註]

停用立即檔案初始化只會影響在撤銷使用者權限之後所建立或有增加大小的檔案。