SQL 寫入器服務
適用於︰SQL Server - 僅限 Windows
SQL 寫入器服務可透過磁碟區陰影複製服務架構提供 SQL Server 備份和還原的附加功能。
SQL 寫入器服務會自動安裝。 當磁碟區陰影複製服務 (VSS) 應用程式要求備份或還原時,此服務必須已在執行中。 若要設定此服務,請使用 Microsoft Windows Services Applet。 SQL 寫入器服務會安裝在所有 Windows 作業系統上。
目的
資料庫引擎會鎖定資料庫檔案,並具有其獨佔存取權。 SQL 寫入器服務未執行時,在 Windows 中執行的備份程式沒有資料檔案的存取權,且備份必須使用原生 SQL Server 備份來執行。 使用 SQL 寫入器服務允許 Windows 備份程式在 SQL Server 執行時複製 SQL Server 資料庫檔案,並保有這些檔案的獨佔鎖定。
磁碟區陰影複製服務
VSS 是一組 COM API,會實作一個架構,讓系統在應用程式持續寫入磁碟區的同時,仍能執行這些磁碟區的備份。 VSS 有助於協調將資料寫入磁碟的使用者應用程式 (寫入器) 與備份該資料的應用程式 (要求者)。
VSS 能在不過度降低所提供服務的效能與穩定性之下,在執行中的系統,特別是伺服器上,擷取和複製可靠的影像以供備份。 如需有關 VSS 的詳細資訊,請參閱 Windows 文件集。
注意
使用 VSS 來備份裝載基本可用性群組的虛擬機器時,若虛擬機器目前裝載處於次要狀態的資料庫,從 SQL Server 2016 (13.x) SP2 CU2 和 SQL Server 2017 (14.x) CU9 開始,這些資料庫將「不會」隨著虛擬機器備份。 這是因為基本可用性群組不支援備份次要複本上的資料庫。 在這些版本之前的 SQL Server 上,備份將會失敗並發生錯誤。
虛擬備份裝置介面 (VDI)
SQL Server 提供名為「虛擬備份裝置介面 (VDI)」的 API,可讓獨立軟體廠商將 SQL Server 整合至其備份和還原產品中。 這些 API 可提供最高的可靠性與效能,並能支援所有的 SQL Server 備份和還原功能,包括所有熱備份與快照集備份能力。 如果第三方應用程式要求快照集 (VSS) 備份,SQL 寫入器服務就會呼叫 VDI API 函式以執行實際備份。 VDI API 與 VSS 無關,且經常用於不採用 VSS API 的軟體解決方案。
權限
SQL 寫入器服務必須以 本機系統 帳戶執行。 SQL 寫入器服務使用 NT Service\SQLWriter 登入連線至 SQL Server。 使用 NT Service\SQLWriter 登入可讓 SQL 寫入器處理序在指定為 沒有登入的帳戶中,以較低權限層級執行,藉此限制漏洞。 如果 SQL 寫入器服務停用,則任何依賴 VSS 快照集的公用程式都可能會中斷,且進行的資料庫備份有可能不一致。 範例包括 System Center Data Protection Manager,以及一些其他第三方產品。
如果 SQL Server (其執行所在的系統) 和主機系統 (在使用虛擬機器的情況下) 只需要 Transact-SQL 備份,則可以安全地停用 SQL 寫入器服務並移除登入。 無論備份是否直接以快照集為基礎,系統或磁碟區層級備份都可能叫用 SQL 寫入器服務。 某些系統備份產品使用 VSS 避免遭到開啟或鎖定檔案的封鎖。 由於 SQL 寫入器服務在活動過程中會暫時凍結 SQL Server 執行個體的所有 I/O,因此 SQL 寫入器服務需要 SQL Server 中的 sysadmin 權限。
特性
SQL 寫入器支援:
- 完整的資料庫備份和還原,包括全文檢索目錄
- 差異備份和還原
- 以移動的方式還原
- 重新命名資料庫
- 僅複製備份
- 自動復原資料庫快照集
SQL 寫入器不支援:
- 記錄備份
- 檔案與檔案群組備份
- 分頁還原
版本升級和維護
SQL 寫入器服務是與 SQL Server 資料庫引擎不同的服務,且在相同伺服器上的不同 SQL Server 版本和執行個體共用。 SQL 寫入器服務檔案隨附於 SQL Server 安裝套件,且會標示與其隨附之 SQL Server 引擎相同的版本號碼。
當新的 SQL Server 執行個體安裝在伺服器上或現有的執行個體升級時,若要安裝或升級之執行個體的版本號碼高於伺服器上目前 SQL 寫入器服務的版本號碼,伺服器上的檔案將會被安裝套件中的檔案取代。
如果 SQL 寫入器服務已由 Service Pack 或 Cumulative Update 更新,且正在安裝新版本的 SQL Server,您可以使用較舊的 SQL 寫入器服務取代較新的版本,前提是該安裝必須有較高的版本號碼。 例如,SQL 寫入器服務已在 SQL Server 2016 (13.x) SP2 CU2 中更新。 若將該執行個體升級至 SQL Server 2017 (14.x) RTM,更新的 SQL 寫入器服務將會取代為較舊的版本。 在此案例中,您將必須套用最新的 CU 到該新執行個體,以取得較新的「SQL 寫入器」服務版本。