Wir möchten die Erfassung von SQL Server-Änderungsdaten für ein neues Subsystem aktivieren, das wir erstellen.
Es ist nicht wirklich so, weil wir es brauchen, aber wir werden dazu gedrängt, eine vollständige Rückverfolgbarkeit der Historie zu haben, und CDC würde diese Anforderung mit minimalem Aufwand für unsere Teile gut lösen.
Wir verfolgen einen agilen Entwicklungsprozess, was in diesem Fall bedeutet, dass wir häufig Änderungen am Datenbankschema vornehmen, z. B. neue Spalten hinzufügen, Daten in andere Spalten verschieben usw.
Wir haben einen kleinen Test durchgeführt, bei dem wir eine Tabelle erstellt, CDC für diese Tabelle aktiviert und dann der Tabelle eine neue Spalte hinzugefügt haben. Änderungen an der neuen Spalte werden nicht in der CDC-Tabelle registriert.
Gibt es einen Mechanismus zum Aktualisieren der CDC-Tabelle auf das neue Schema und gibt es bewährte Methoden für den Umgang mit erfassten Daten bei der Migration des Datenbankschemas?
quelle
Antworten:
Wir haben auch vor kurzem begonnen, uns mit CDC zu befassen. Ich bin kein Experte auf diesem Gebiet, aber ich glaube, ich habe einige Antworten auf Ihre Fragen.
CDC wird Ihnen größtenteils dabei helfen , Ihr Ziel einer vollständig nachvollziehbaren Geschichte zu erreichen, aber ich denke nicht, dass es Sie den ganzen Weg dorthin bringen wird.
Zuerst:
Und hier wird CDC Ihrer Meinung nach scheitern. Die MSDN-Dokumentation unter dem Abschnitt "Grundlegendes zum Änderungsverfolgungsaufwand" ist ziemlich klar, dass die Schemaänderungen für Sie nicht nachverfolgt werden. Zum Beispiel mit
Alter Table Add Column
:Drop Column
ist etwas komplexer.Sie sollten jedoch DB-Skripte verwenden, um Ihr Schema zu ändern, damit Sie sich hier nicht unbedingt auf CDC verlassen müssen. Auf diese Weise können Sie die Konsistenz zwischen Ihren QS- und Produktionsschemata gewährleisten. Die Änderung der Qualitätssicherung sollte per Skript erfolgen, damit genau dieselben Änderungen auf Prod angewendet werden können. Es sollte nicht zu schwierig sein, die Schemaänderungen aus diesen Skripten zu extrahieren. Dies kann bedeuten, dass die "Zeit" -Dimension Ihres Verlaufs von der Version anstelle der tatsächlichen Zeit abhängt, das Endergebnis jedoch dasselbe ist.
Wenn Sie noch keine haben, erstellen Sie eine Tabelle, um die Version Ihres Datenbankschemas zu verfolgen. Platzieren Sie dann diese Versions-Tabelle für das Datenbankschema unter CDC, damit Sie makroskopische Änderungen am Schema an den mikroskopischen Änderungen in einer bestimmten Tabelle ausrichten können.
Nach meinem Verständnis sollten die Daten immer noch zu den neuen Spalten hinzugefügt werden, unabhängig davon, ob CDC die Schemaänderung nicht anzeigt. Die Datenmigration von Tabelle zu Tabelle sollte auch von CDC übernommen werden.
Behandeln Sie es so, als würden Sie ein Audit behandeln. Sie müssen verstehen, was Sie untersuchen, warum Sie es untersuchen und wie lange Sie diese Informationen aufbewahren müssen. Umfang und Aufbewahrung sind die beiden größten Bugaboos, wenn es um eine solche Aufgabe geht.
Die Berichterstellungstools von CDC sind verständlicherweise streng, daher müssen Sie den Kontext der Änderungen kennen. Es ist zu einfach zu sagen "Verfolge alles !" und am Ende nichts, was als Ergebnis verwendbar ist. Ebenso können Sie die Größe Ihrer Datenbank verdoppeln, indem Sie eine Kopie jeder Änderung aufbewahren. Auf einem hohen Abwanderungstisch mit vielen Einfügungen und Löschungen werden Sie astronomisches Wachstum erzielen. Das ist an und für sich nicht schlecht, aber Sie müssen dieses Wachstum budgetieren und über die Mittel verfügen, um alle generierten Daten zu untersuchen.
Auf diese Weise können Sie wieder verstehen, warum Sie dazu gedrängt werden, eine vollständige Rückverfolgbarkeit zu gewährleisten. Es gibt sicherlich triftige Gründe für diese Anforderung. Sie können Ihre effektive Prüfung der Datenbank jedoch erst strukturieren, wenn Sie wissen, warum Sie diese Anforderung erfüllen müssen.
quelle
Sie können das Hinzufügen von Spalten mit DDL-Triggern verfolgen.
Mit der Ereignisgruppe DDL_TABLE_EVENTS können Sie für CREATE, DROP oder ALTER einer Tabelle ausgelöst werden.
Wenn Sie Enterprise> 2008 verwenden, sollten Sie sich jedoch SQL Server Audit ansehen , da es "alle Überwachungsfunktionen in einer Überwachungsspezifikation kombiniert". Dieser msdn-Link enthält einen ausführlichen Artikel dazu: http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx .
Anschließend erstellen Sie Server- oder Datenbankspezifikationen.
quelle
Simple-Talk enthält einen großartigen Artikel über die Erfassung von Änderungsdaten und eine ausführliche Anleitung zu CDC sowie die MSDN- Dokumentation, in der die verschiedenen Methoden je nach den Anforderungen erläutert werden. Beide können Ihnen jedoch bei Ihren spezifischen Anforderungen helfen.
quelle