Backup

恢復到網路路徑時啟用 SQL 即時文件初始化

  • January 15, 2018

我們有一個大型只讀 SQL 數據庫 (SQL 2012),我們正在將其還原到 NAS,作為目前的管道膠帶解決方案。我想知道為什麼恢復過程似乎掛起。

我一路走來的部分指導來自:

http://www.brentozar.com/archive/2012/01/sql-server-databases-on-network-shares-nas/http://www.brentozar.com/blitz/instant-file-initialization/

我相信我已經確定在創建或恢復到 UNC 路徑時即時文件初始化可能不可用(或者可能需要額外的設置)。下面的 SQL 程式碼展示了

DBCC TRACEON(3004,3605,-1)
GO
CREATE DATABASE [DestinedForGreatness]
GO
DROP DATABASE DestinedForGreatness
GO
EXEC sp_readerrorlog
GO
CREATE DATABASE [DestinedForGreatness]
ON PRIMARY
( NAME = N’DestinedForGreatness’, FILENAME = N’\\LittleBlackBox\SQL2012data\MSSQL\Data\DestinedForGreatness.mdf’ )
LOG ON
( NAME = N’DestinedForGreatness_log’, FILENAME = N’\\LittleBlackBox\SQL2012data\MSSQL\Data\DestinedForGreatness_log.ldf’)
GO
DROP DATABASE DestinedForGreatness
GO
EXEC sp_readerrorlog
GO
DBCC TRACEOFF(3004,3605,-1)

我可以在本地創建數據庫時首先看到它不會 0 從錯誤日誌中填充 MDF。在第二種情況下,它確實如此。

我很想知道是否有任何解決方法可以利用 IFI。在我正在恢復的伺服器上應用 Windows 安全設置來解決這個問題嗎?

記錄了“即時文件初始化”(又名。SetFileValidData)的這種限制:

注意 該文件不能是網路文件,也不能是壓縮、稀疏或事務處理的。

在沒有啟用即時文件初始化的情況下在 SQL Server 上恢復 BIG 數據庫是一個錯誤。在沒有 IFI 的情況下進行恢復所花費的時間遠大於在啟用 IFI 的情況下進行恢復所花費的時間。

啟用 IFI 後,此權限可防止 SQL Server 在您創建或擴展數據文件時“清零”新空間。節省了這段時間,從而使您的恢復速度更快。

您可以使用以下查詢來檢查您的還原操作完成了多少

select percent_completed from sys.dm_exec_requests where session_id=xxx---restore session id

如果可以嘗試,請使用 NO IFI 開始恢復,您會看到percent_completed在很短的時間內為 0。而這將立即開始顯示一些價值。所以底線 IFI 是必須的。

引用自:https://dba.stackexchange.com/questions/126164