保護資料和記錄檔

「SQL Server」會將每個資料庫的實體資料和記錄檔的存取權限指定給特定帳戶。此權限可防止具有開放權限目錄中的檔案遭他人修改。例如,如果沒有設定權限,而且資料庫目錄的作業系統權限設為每個人都有**「完整控制權」**,則任何可存取該目錄的帳戶都可以刪除或修改資料庫檔案,即使它們沒有修改資料庫本身的 SQL Server 權限也是一樣。

在下列任一資料庫作業期間都會設定檔案存取權限:建立、附加、卸離、修改以加入新檔案、備份或是還原。

管理考量

  • 權限只會在檔案系統支援 Win32 存取控制 (例如 NTFS 檔案系統) 時才設定。「Database Engine」無法針對儲存在原始分割區、FAT 以及 FAT32 檔案系統上的檔案來設定其權限。

  • 如果作業系統管理員手動修改檔案權限,「Database Engine」將不會強制執行原始的權限。

  • 如果 SQL Server (MSSQLSERVER) 服務帳戶是使用 SQL Server Management Studio 來變更,Management Studio 就會嘗試加入帳戶並修正所有現有資料庫檔案的權限。在變更服務帳戶時對於無法使用的資料庫可能會失敗。

  • 如果 MSSQLSERVER 服務帳戶是使用 Microsoft Windows Services 來變更,作業系統管理員就必須針對所有的資料庫與記錄檔,授與新服務帳戶**「完整控制權」**權限。

建立資料庫或加入新檔案

在建立資料庫或修改資料庫以加入新檔案時,將針對 MSSQLSERVER 服務帳戶以及本機 Administrators 群組的成員,授與資料和記錄檔的**「完整控制權」**。並且會移除所有其他帳戶的檔案存取權。

備份和還原資料庫

為了還原或備份所建立之檔案的**「完整控制權」**權限,將會授與給 MSSQLSERVER 服務帳戶以及本機 Administrators 群組的成員。

如果該檔案已經存在,就表示 MSSQLSERVER 服務帳戶已經有該檔案的權限,備份或還原作業將會繼續。否則,「Database Engine」會模擬正在執行作業之連接的 Windows 帳戶並嘗試開啟檔案。在開啟檔案後,就會將權限授與給 MSSQLSERVER 服務帳戶以及本機 Administrators 群組的成員。

待命資料庫檔案 (恢復檔案) 也會以同樣的方式處理。

卸離和附加資料庫

卸離或附加資料庫時,Database Engine 會嘗試模擬正在執行作業之連接的 Windows 帳戶,以確保該帳戶具有存取資料庫與記錄檔的權限。對於使用 SQL Server 登入的混合安全性帳戶,模擬可能會失敗。

安全性注意事項安全性注意事項

建議您不要附加來源不明或來源不受信任的資料庫。這種資料庫可能包含惡意程式碼,因此可能執行非預期的 Transact-SQL 程式碼,或是修改結構描述或實體資料庫結構而造成錯誤。使用來源不明或來源不受信任的資料庫之前,請先在非實際伺服器中的資料庫上執行 DBCC CHECKDB,同時檢查資料庫中的程式碼,例如預存程序或其他使用者自訂程式碼。

下表顯示在附加或卸離作業完成後資料庫和記錄檔上所設定的權限,以及「Database Engine」是否可模擬連接的帳戶。

作業

可以模擬連接帳戶

授與檔案權限給

卸離

僅執行作業的帳戶。在卸離資料庫後,如果作業系統管理員有需要,可以加入其他的帳戶。

卸離

SQL Server (MSSQLSERVER) 服務帳戶與本機 Windows Administrators 群組的成員。

附加

SQL Server (MSSQLSERVER) 服務帳戶與本機 Windows Administrators 群組的成員。

附加

SQL Server (MSSQLSERVER) 服務帳戶。

案例

下列狀況展示建立資料庫時所設定的權限,以及在卸離或附加資料庫時所修改的權限。

資料庫建立者 (dbcreator) 固定伺服器角色的成員 User1,建立了 Sales 資料庫,其中包含 e:\Data\Sales.mdf 檔案以及 f:\Log\Sales.ldf 檔案。在建立資料庫時,MSSQLSERVER 服務帳戶為本機帳戶 SQLServiceAccount2。資料庫和記錄檔的**「完整控制權」**權限,會授與給 SQLServiceAccount2 以及 Windows Administrators 群組的成員。

Sales 資料庫將移至相同伺服器上 SQL Server 的另一個執行個體。系統管理員 (sysadmin) 固定伺服器角色的成員 Admin3,卸離了資料庫。「Database Engine」設定了 Sales.mdf 與 Sales.ldf 檔案的權限,以便讓 Admin3 帳戶才有存取檔案的權限。

Admin3 連接到 SQL Server、SalesServer 的其他執行個體。SalesServer 執行個體的 MSSQLSERVER 服務帳戶為 SQLSalesServiceAccount。在此執行個體上的 SQL Server 管理員 Admin3 附加了 Sales 資料庫。**「完整控制權」**權限會授與給 SQLSalesServiceAccount 以及 Windows Administrators 群組的成員。