2016-04-17 45 views
0

ich Wiederherstellungen über mehrere Server über dynamische SQL und verknüpfte Server tue wie folgt:SQL Server: Wiederherstellen DB über Verbindungsserver - Datenbank intermittierend bei der Wiederherstellung Zustand (sogar mit RECOVERY-Option) stecken

Exec ('USE MASTER; RESTORE DATABASE <dbname> FROM DISK = <path> WITH REPLACE, RECOVERY') AT <target server> 

Die Datenbank festgelegt ist in den Einzelbenutzermodus, bevor die obige Anweisung ausgeführt wird. Doch bei intermittierenden Gelegenheiten, wenn die Datenbank wieder zu Multi-User-Modus zu erhalten versuchen, erhalte ich die eine Abfrage-Timeout von dem der Zielserver und Fehler:

ALTER DATABASE is not permitted while a database is in the Restoring state

Ich habe sehe mich für diesen Fehler, aber anscheinend ist ich sollte es nicht bekommen, wenn Sie die Option RECOVERY verwenden.

Irgendwelche Ideen bitte?

Antwort

0

Ich habe es heute herausgefunden. Der Grund für das Problem war das standardmäßige Zeitlimit für Remote-Abfragen für Sql-Server, das 600s (10 Minuten) beträgt. Mehr dazu in folgendem Link https://msdn.microsoft.com/en-us/library/ms189040(v=sql.105).aspx

Meine Wiederherstellung dauert in der Regel etwa 10 Minuten, manchmal ein bisschen weniger, so dass es gelingt und manchmal ein bisschen mehr, wenn es scheitert. Daher manifestierte sich das Problem intermittierend.

Ich erhöhte das Timeout für die Remote-Abfrage auf dem Quellserver auf 36000s und es wurde erfolgreich wiederhergestellt. Um den Punkt zu verdeutlichen, reduzierte ich das Zeitlimit für die Remote-Abfrage auf eine kleine Zahl wie 60s und bekam das gleiche Symptom erneut.

Michelle - Ich habe die Datenbank in einem einzelnen Benutzer eingerichtet, um alle laufenden Abfragen vor der Wiederherstellung zu beenden und um sicherzustellen, dass es keine Konflikte gibt, während die Datenbank wiederhergestellt wird. Dadurch würde der exklusive Zugriff nicht erhalten, da der Datenbankfehler verwendet wird. Alternativ kann die Datenbank vor dem Start der Wiederherstellung in den Offline-Modus versetzt und anschließend wieder online geschaltet werden.