SQL Server 2014(ビルド12.0.24457.0)データベースには2つのテーブルがあり、どちらもFileStreamテーブルで、最大のものは2979466行、SUM(cached_file_size)= 40564905472
です。
このデータベースをテストサーバーに復元しようとしましたが、かなり時間がかかります。私たちのDBAは14日後にあきらめました。
他の誰かがFileStreamテーブルを使用してデータベースを復元しようとしましたが、数個以上のファイルが含まれていますか?
このスクリプトを実行して進行状況を監視しています。
BEGIN TRY
DROP TABLE #h
END TRY
BEGIN CATCH
END CATCH
DECLARE @r INT=1, @percent_complete NUMERIC(9,2), @Extimated_Completion_Datetime DATETIME2(0)
CREATE TABLE #h ( start_time DATETIME2(0), percent_complete NUMERIC(9,2), Estimated_completion_time NUMERIC(9,2), HoursSinceStart NUMERIC(9,2), Extimated_Completion_Datetime DATETIME2(0), session_id INT, created_date datetime2(0))
DECLARE @d VARCHAR(19) , @e VARCHAR(max)
WHILE @r > 0 BEGIN
INSERT INTO #h
SELECT start_time, percent_complete, CAST(ROUND(estimated_completion_time/3600000.0,1) AS DECIMAL(9,1)) AS Estimated_completion_time
, CAST(ROUND(total_elapsed_time/3600000.0,1) AS DECIMAL(9,1)) AS HoursSinceStart
, DATEADD(HOUR, CAST(ROUND(estimated_completion_time/3600000.0,1) AS DECIMAL(9,1)), GETDATE()) AS Extimated_Completion_Datetime
, session_id
, GETDATE()
FROM
sys.dm_exec_requests AS r
WHERE
r.session_id <> @@SPID
AND r.session_id > 50
AND command LIKE 'restore database'
SELECT @r = @@ROWCOUNT
select top 1 @percent_complete=percent_complete, @Extimated_Completion_Datetime=Extimated_Completion_Datetime from #h ORDER BY created_date DESC
SET @d = CONVERT(VARCHAR(19), @Extimated_Completion_Datetime, 121)
SET @e = CONVERT(VARCHAR(19), GETDATE(), 121) + ' we are ' + LTRIM(@percent_complete) + '% complete. We estimate to finish at: ' + @d
RAISERROR('At %s ', 10, 1, @e) WITH NOWAIT
--WAITFOR DELAY '00:00:10'
WAITFOR DELAY '00:01:00'
END
これまでのところ私はこの結果を持っています:
2016-06-08 10:35:46に00.01%完了しています。 2016-06-08 14:22:46に39.26%完了しています。終了予定時刻:2016-06-08 18:22:47 2016-06-08 14:23:46に39.27%完了しています。終了予定時刻:2016-06-08 18:23:47 2016-06-08 14:24:46に39.28%完了しています。終了予定時刻:2016-06-08 18:24:47 ... 2016-06-09 08:33:07には、44.80%完了しています。終了予定時刻:2016-06-10 09:33:08 2016-06-09 08:34:07には44.80%完了しています。終了予定時刻:2016-06-10 09:34:08 2016-06-09 08:35:07には44.80%完了しています。終了予定時刻:2016-06-10 09:35:08 2016-06-09 08:36:07には44.81%完了しています。終了予定時刻:2016-06-10 09:36:08 2016-06-09 08:37:07には44.81%完了しています。完了予定時刻:2016-06-10 09:37:08 2016-06-09 08:38:07には44.81%完了しています。終了予定時刻:2016-06-10 09:38:08 2016-06-09 08:39:07には44.82%完了しています。終了予定時刻:2016-06-10 09:39:08 ... 2016-06-10 08:12:01には、47.86%完了しています。終了予定時刻:2016-06-12 08:12:02 2016-06-10 08:13:01には、47.86%完了しています。終了予定時刻:2016-06-12 08:13:02
正確には速くありません。 13:45に42%から45%に達したため、現在の速度では2016-06-27 13:45、つまり18日で終了するようです。 44 GBの場合!
SELECT top 10000 resource_description AS resource_description, *
FROM sys.dm_os_waiting_tasks
WHERE session_id=64
言う:
wait_type =
BACKUPTHREAD
...時々BACKUPIO
も
そこで、別の復元を設定して、復元メッセージを取得します。
DBCC TRACEON(3604, 3605, 3014);
RESTORE DATABASE [VDCFileStreamhespotest] FROM DISK = N'\\dkrdsvdcp19\MSSQL_Backup\Full\Misc\VDCFileStream_backup_2016_06_07_180004_7123139.bak' WITH FILE = 1,
NOUNLOAD, REPLACE, STATS = 1
, move 'VDCFileStream' to 'P:\MSSQL\DPA\System\MSSQL10_50.DPA\MSSQL\DATA\UserDBs\VDCFileStream\VDCFileStreamDBhespo.mdf'
, MOVE 'VDCFileStream_log' to 'P:\MSSQL\DPA\Log\Log02\VDCFileStream\VDCFileStreamDBhespo_log.ldf'
, MOVE 'VDCFileStreamF1' to 'G:\VDCFileStream\FileStreamDatahespo'
復元(VDCFileStreamhespotest):RESTORE DATABASEが開始されました 復元(VDCFileStreamhespotest):バックアップセットを開いています 復元(VDCFileStreamhespotest):先頭のメタデータを処理しています 復元(VDCFileStreamhespotest) :計画の開始 バックアップ/復元バッファー構成パラメーター メモリ制限:32767 MB BufferCount:6 バッファーのセット:2 MaxTransferSize:1024 KB 最小最大転送サイズ:1024 KB 合計バッファスペース:12 MB 表形式のデータデバイス数:1 フルテキストデータデバイス数:0 ファイルストリームデバイス数:1 TXFデバイス数:0 ファイルシステムI/Oアラインメント:512 メディアバッファー数:6 メディアバッファーサイズ:1024 KB エンコードバッファカウント:6 復元(VDCFileStreamhespotest):有効なオプション:チェックサム= 1、圧縮= 1、暗号化= 0、バッファカウント= 6、MaxTransferSize = 1024 KB 復元(VDCFileStreamhespotest):計画が完了しました 復元(VDCFileStreamhespotest):オフライン復元を開始します 復元(VDCFileStreamhespotest):DB_ID = 48としてデータベースに接続しましたコンテナの準備 復元(VDCFileStreamhespotest):コンテナの準備ができています 復元(VDCFileStreamhespotest):バックアップセットの復元 復元(VDCFileStreamhespotest):転送する推定合計サイズ= 45540792320バイト Restore(VDCFileStreamhespotest):データを転送しています 1%処理されました。
サーバー上に32GBのメモリを持つ45GBのデータベースを復元しようとしています。
あなたができることは、サーバーのメモリ(RAM)を増やして、遊ぶことです
BUFFERCOUNT
、BLOCKSIZE
、MAXTRANSFERSIZE
バックアップパラメータをINIT
&COMPRESSION
とともに使用します(これを使用しています)出力からわかるように)バックアップを調整します。現在のところ、6MBしかありません。これはかなり低い容量です。
編集:
データベースを復元することができました。
サーバーの一部の設定を変更したところ、124分しかかかりませんでした。
私はここに設定を見つけました: https://support.Microsoft.com/da-dk/kb/2160002
そしてここに https://technet.Microsoft.com/en-us/library/cc778996.aspx
リンクが機能しなくなった場合:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemで、NtfsDisableLastAccessUpdateおよびNtfsDisable8dot3NameCreationを1に設定する必要があります。