Stellen Sie die Datenbank mit einer FileTable wieder her


7

Wir haben eine SQL Server 2014-Datenbank (Build 12.0.24457.0) mit zwei Tabellen, beide sind FileStream-Tabellen, die größte hat 2979466 Zeilen SUM(cached_file_size)= 40564905472.

Wir haben versucht, diese Datenbank auf unserem Testserver wiederherzustellen, aber es dauert ziemlich lange. Unser DBA gab nach 14 Tagen auf.

Hat jemand anderes versucht, eine Datenbank mit FileStream-Tabellen wiederherzustellen, mit mehr als ein paar Dateien?

Ich führe dieses Skript aus, um den Fortschritt zu überwachen:

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

Bisher habe ich dieses Ergebnis:

Am 08.06.2016 um 10:35:46 Uhr sind wir zu 00,01% fertig.
Am 08.06.2016 14:22:46 sind wir zu 39,26% fertig. Wir schätzen, um zu beenden: 2016-06-08 18:22:47
Am 08.06.2016 14:23:46 sind wir zu 39,27% fertig. Wir schätzen, um zu beenden: 2016-06-08 18:23:47
Am 2016-06-08 14:24:46 sind wir zu 39,28% fertig. Wir schätzen, um zu beenden: 2016-06-08 18:24:47
...
Am 09.06.2016 08:33:07 sind wir zu 44,80% fertig. Wir werden voraussichtlich am: 2016-06-10 09:33:08 fertig sein
Am 2016-06-09 08:34:07 sind wir zu 44,80% fertig. Wir schätzen, um zu beenden: 2016-06-10 09:34:08
Am 09.06.2016 08:35:07 sind wir zu 44,80% fertig. Wir werden voraussichtlich am: 2016-06-10 09:35:08 fertig sein
Am 2016-06-09 08:36:07 sind wir zu 44,81% fertig. Wir werden voraussichtlich am: 2016-06-10 09:36:08 fertig sein
Am 09.06.2016 08:37:07 sind wir zu 44,81% fertig. Wir werden voraussichtlich am: 2016-06-10 09:37:08 fertig sein
Am 09.06.2016 08:38:07 sind wir zu 44,81% fertig. Wir gehen davon aus, dass wir am: 2016-06-10 09:38:08 fertig sind
Am 09.06.2016 08:39:07 sind wir zu 44,82% fertig. Wir gehen davon aus, dass wir am: 2016-06-10 09:39:08 fertig sind
...
Am 10.06.2016 08:12:01 sind wir zu 47,86% fertig. Wir gehen davon aus, dass wir am: 2016-06-12 08:12:02 fertig sind
Am 10.06.2016 08:13:01 sind wir zu 47,86% fertig. Wir schätzen, um zu beenden: 2016-06-12 08:13:02

Nicht gerade schnell. Es ist gelungen, in 13:45 von 42% auf 45% zu steigen. Mit der aktuellen Geschwindigkeit scheint es also am 27.06.2016 um 13:45 oder in 18 Tagen zu enden. Für 44 GB!

SELECT top 10000 resource_description AS resource_description, * 
FROM sys.dm_os_waiting_tasks
WHERE session_id=64

sagt:

wait_type =BACKUPTHREAD

... manchmal BACKUPIOauch

Also habe ich eine weitere Wiederherstellung eingerichtet, um Wiederherstellungsnachrichten abzurufen:

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'
Wiederherstellen (VDCFileStreamhespotest): RESTORE DATABASE wurde gestartet
Wiederherstellen (VDCFileStreamhespotest): Öffnen des Sicherungssatzes
Wiederherstellen (VDCFileStreamhespotest): Verarbeitung der führenden Metadaten
Wiederherstellen (VDCFileStreamhespotest): Die Planung beginnt
Konfigurationsparameter für Puffer sichern / wiederherstellen
Speicherlimit: 32767 MB
BufferCount: 6
Puffersätze: 2
MaxTransferSize: 1024 KB
Min MaxTransferSize: 1024 KB
Gesamtpufferplatz: 12 MB
Anzahl der tabellarischen Datengeräte: 1
Anzahl der Volltextdatengeräte: 0
Anzahl der Filestream-Geräte: 1
Anzahl der TXF-Geräte: 0
E / A-Ausrichtung des Dateisystems: 512
Anzahl der Medienpuffer: 6
Medienpuffergröße: 1024 KB
Pufferanzahl codieren: 6
Wiederherstellen (VDCFileStreamhespotest): Effektive Optionen: Prüfsumme = 1, Komprimierung = 1, Verschlüsselung = 0, Pufferanzahl = 6, MaxTransferSize = 1024 KB
Wiederherstellen (VDCFileStreamhespotest): Die Planung ist abgeschlossen
Wiederherstellung (VDCFileStreamhespotest): Beginn der OFFLINE-Wiederherstellung
Wiederherstellen (VDCFileStreamhespotest): Angehängte Datenbank als DB_ID = 48
Wiederherstellen (VDCFileStreamhespotest): Vorbereiten von Containern
Wiederherstellen (VDCFileStreamhespotest): Container sind bereit
Wiederherstellen (VDCFileStreamhespotest): Wiederherstellen des Sicherungssatzes
Wiederherstellen (VDCFileStreamhespotest): Geschätzte Gesamtgröße für die Übertragung = 45540792320 Byte
Wiederherstellen (VDCFileStreamhespotest): Daten übertragen
1 Prozent verarbeitet.

Hier, 5 Tage später, sind wir jetzt auf halbem Weg:aber der Rest der Reise wird lang sein


@Verwandtschaft; Instant File Init ist aktiviert. Energieplan auf High perf eingestellt. Ich habe es gerade noch einmal überprüft.
Henrik Staun Poulsen

Antworten:


1

Sie versuchen, eine 45-GB-Datenbank mit 32 GB Speicher auf dem Server wiederherzustellen.

Was Sie tun können, ist den Speicher (RAM) auf dem Server zu erhöhen und damit zu spielen

  1. Ziehen Sie Ihr Backup auf mehrere LUNs oder Festplatten.
  2. Verwenden Sie BUFFERCOUNT, BLOCKSIZE,MAXTRANSFERSIZE Backup - Parameter zusammen mit INIT& COMPRESSION(Sie es verwenden , wie ich von Ihrer Ausgabe sehen) abzustimmen Ihre Sicherung.
  3. Verwenden Sie CHECKSUM nicht, während Sie ein Backup erstellen, da dies zu einer längeren Backup-Zeit beitragen kann. Versuchen Sie stattdessen, die Sicherung auf einem anderen Server wiederherzustellen, um sie zu testen. Dadurch wird bestätigt, dass Sie sie wiederherstellen können, und anschließend CHECKDB ausgeführt, um sicherzustellen, dass keine Beschädigung vorliegt.

Ab sofort erhalten Sie nur 6 MB, was ziemlich niedrig ist.


2

EDIT:
Ich habe es endlich geschafft, die Datenbank wiederherzustellen.
Es dauerte nur 124 Minuten, als wir einige Einstellungen auf dem Server änderten.

Ich habe die Einstellungen hier gefunden: https://support.microsoft.com/da-dk/kb/2160002

und hier https://technet.microsoft.com/en-us/library/cc778996.aspx

Falls die Links nicht mehr funktionieren: In HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem sollten NtfsDisableLastAccessUpdate und NtfsDisable8dot3NameCreation auf 1 gesetzt werden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.