Ich habe das gleiche Problem und glaube, ich habe es behoben, aber ich konnte es nicht vollständig testen, um es zu bestätigen.
Ich glaube, die Probleme hängen mit der Anzahl der VLFs zusammen, die Sie in Ihrer Protokolldatei haben, und nicht mit ihrer Größe. Wenn Sie eine große Protokolldatei haben, ist es wahrscheinlich, dass sie durch automatische Wachstumsereignisse organisch gewachsen ist und dass es sich nicht um ein beabsichtigtes geplantes Wachstum handelt. In diesem Fall befinden sich möglicherweise Tausende von VLFs in Protokolldateien.
Hier ist eine Abfrage, um zu sehen, wie viele VLFs Sie haben, die ich von hier aus verwendet habe :
Create Table #stage(
FileID int
, FileSize bigint
, StartOffset bigint
, FSeqNo bigint
, [Status] bigint
, Parity bigint
, CreateLSN numeric(38));
Create Table #results(
Database_Name sysname
, VLF_count int
);
Exec sp_msforeachdb N'Use ?;
Insert Into #stage
Exec sp_executeSQL N''DBCC LogInfo(?)'';
Insert Into #results
Select DB_Name(), Count(*)
From #stage;
Truncate Table #stage;'
Select *
From #results
Order By VLF_count Desc;
Drop Table #stage;
Drop Table #results;
Eine weitere Erklärung der VLFs finden Sie unter diesem Link .
Ich glaube, das Problem ist, dass SQL Server bei so vielen VLFs lange braucht, um ihren Status zu beurteilen und dann die Datenbank aus der Wiederherstellung zu bringen. Wenn Sie Ihre Protokolldatei auf die kleinstmögliche Größe verkleinern, häufig auf die Größe des ersten VLF, der in der Protokolldatei erstellt wurde, können Sie sie sofort absichtlich wieder vergrößern und dadurch die richtige Anzahl von VLFs erstellen lassen (etwas weniger als) 16).
Sobald dies abgeschlossen ist, können Sie sicher feststellen, dass Ihre Datenbank viel schneller wiederhergestellt wird.
Ich hatte keine Gelegenheit, ein Failover unserer Produktionsinstanzen zu testen, nachdem ich unsere eigenen VLF-Probleme behoben hatte. Daher wäre ich sehr gespannt, ob Sie bestätigen können, dass dies die Hauptursache des Problems ist. Experimentell habe ich gesehen, dass die Zeit, die für die Wiederherstellung in unserer Staging-Umgebung benötigt wird, aufgrund dieser Tatsache drastisch reduziert wurde. Hoffentlich ist es das.