Wie kann man feststellen, ob eine Sicherungsdatei CDC enthält?

9

Mit SQL Server 2008 bis 2014 kann ich eine Datenbank mit aktiviertem CDC (Change Data Capture) sichern und wiederherstellen. Ich suche jedoch nach einer Möglichkeit, eine vollständige Sicherungsdatei abzufragen, um festzustellen, ob sie CDC-Daten enthält.

Was wäre großartig, wenn auf diese Weise RESTORE FILELISTONLYdie Dateiliste aus der Datenbank abgerufen wird, aber stattdessen der CDC-Status abgerufen wird, um zu bestimmen, ob für die Wiederherstellung das KEEP_CDC-Flag verwendet werden muss?

Gibt es eine Möglichkeit festzustellen, ob ein Backup CDC-Daten enthält?

Vielen Dank!

Steve Stedman
quelle

Antworten:

7

(Wenn jemand einen Weg findet - von dem ich nicht glaube, dass er existiert, werde ich meine Antwort löschen :-))

Gibt es eine Möglichkeit festzustellen, ob ein Backup CDC-Daten enthält?

Ich glaube nicht, dass es eine Möglichkeit gibt, anhand eines Backups festzustellen, ob CDC aktiviert ist oder nicht.

Sie können höchstens wissen, ob die Datenbank an der Replikation beteiligt war (unter der Haube wird ein Protokollleser-Agent verwendet, der das Transaktionsprotokoll durchsucht) oder nicht, indem Sie DatabaseBackupLSN als Ergebnis von RESTORE HEADERONLYDatabaseBackupLSN verwenden, ebenso wie den „Beginn des Prüfpunkts“, der beim Sichern ausgelöst wird beginnt. Diese LSN stimmt überein, FirstLSNwenn die Sicherung durchgeführt wird, wenn die Datenbank inaktiv ist und keine Replikation konfiguriert ist.

Ich gehe davon aus, dass der Grund, warum Microsoft nicht auftaucht, ob CDC aktiviert ist oder nicht, auch eine Sicherheitssache sein könnte. CDC ist eine Technologie auf Unternehmensebene, mit der Änderungen bis zur Spaltenebene verfolgt werden können. Dies ist durch Vorschriften wie HIPAA, FISMA usw. vorgeschrieben.

Vom Wiederherstellen oder Anhängen einer Datenbank, die für die Datenerfassung zum Ändern aktiviert ist

SQL Server verwendet die folgende Logik, um zu bestimmen, ob die Erfassung von Änderungsdaten nach der Wiederherstellung oder dem Anhängen einer Datenbank aktiviert bleibt:

  • Wenn eine Datenbank auf demselben Server mit demselben Datenbanknamen wiederhergestellt wird, bleibt die Änderungsdatenerfassung aktiviert.
  • Wenn eine Datenbank auf einem anderen Server wiederhergestellt wird, ist die Erfassung von Änderungsdaten standardmäßig deaktiviert und alle zugehörigen Metadaten werden gelöscht.
  • Verwenden Sie beim Wiederherstellen der Datenbank die Option KEEP_CDC, um die Erfassung von Änderungsdaten beizubehalten. Weitere Informationen zu dieser Option finden Sie unter RESTORE.
  • Wenn eine Datenbank getrennt und an denselben Server oder einen anderen Server angeschlossen wird, bleibt die Änderungsdatenerfassung aktiviert.
  • Wenn eine Datenbank mit der Option KEEP_CDC an eine andere Edition als Enterprise angehängt oder wiederhergestellt wird, wird der Vorgang blockiert, da für die Erfassung von Änderungsdaten SQL Server Enterprise erforderlich ist. Die Fehlermeldung 932 wird angezeigt:

SQL Server kann die Datenbank '%. * Ls' nicht laden, da die Erfassung von Änderungsdaten aktiviert ist. Die derzeit installierte Edition von SQL Server unterstützt die Erfassung von Änderungsdaten nicht. Deaktivieren Sie entweder die Erfassung von Änderungsdaten in der Datenbank mithilfe einer unterstützten Edition von SQL Server oder aktualisieren Sie die Instanz auf eine Instanz, die die Erfassung von Änderungsdaten unterstützt.

Kin Shah
quelle
Kin - Wie immer bist du ein Rockstar DBA. Danke für die Details. Ich glaube, ich war zu dem gleichen Schluss gekommen und suchte wirklich jemanden, der bestätigt, dass es keine Möglichkeit gibt, einfach zu überprüfen, ob ein Backup CDC enthält. Ich wünsche ihnen einen wunderbaren Tag. Vielen Dank!
Steve Stedman
@SteveStedman Danke für freundliche Worte. Bitte stimmen Sie der Antwort zu, wenn Ihre Frage beantwortet wird. Dies wird auch zukünftigen Lesern helfen :-)
Kin Shah
Danke Steve für den Beitrag und danke @Kin, habe heute etwas Neues gelernt.
SQLBoy
Hinweis: CDC ist ab sofort für 2016SP1 Standard verfügbar und wird immer mehr zum Mainstream. Ich möchte CDC-Optionen in der Wiederherstellungs-Benutzeroberfläche unter SSMS. Ich schlug dies auch beim Verbinden vor: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton