Glauben Sie, das sagt alles?
Jetzt, wo es MVCC hat, ist es wirklich überraschend, dass es das nicht tut.
Glauben Sie, das sagt alles?
Ich weiß, diese Frage ist schon ziemlich alt, aber mit SQL Server 2016 Temporal Tables ist eine Funktion: https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables
Vielleicht kann es anderen helfen, falls sie auf dieses Thema stoßen (Suche nach einer ähnlichen Funktion wie Oracle Flashback)
Wenn temporale Tabellen aktiviert sind, können Sie die Tabelle AS OF eines bestimmten Zeitstempels abfragen und die Zeilen so abrufen, wie sie zu diesem bestimmten Zeitstempel waren, genau wie Sie es von Oracle gewohnt sind:
(SELECT * FROM EMPLOYEE AS OF TIMESTAMP ('13-SEP-04 8:50:58','DD-MON-YY HH24: MI: SS')
Die äquivalente Abfrage in SQL Server für eine Tabelle mit SYSTEM_VERSIONING=ON wird sein:
SELECT * FROM EMPLOYEE FOR SYSTEM_TIME AS OF '2004-09-01 08:50:58'
Um SYSTEM_VERSIONING für eine bestehende Tabelle mit Zeilen zu aktivieren, können Sie das folgende Skript verwenden :
ALTER TABLE [dbo].[TABLE] ADD [SysStartTime] datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysStartTime DEFAULT '1900-01-01 00:00:00', [SysEndTime] datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysEndTime DEFAULT '9999-12-31 23:59:59', PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = ON);
Nachdem Sie SYSTEM_VERSIONING aktiviert haben, wird die Tabelle History unter der Tabelle angezeigt, in der Sie die Versionierung aktiviert haben:
So entfernen Sie SYSTEM_VERSIONING aus einer Tabelle:
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [dbo].[TABLE] DROP PERIOD FOR SYSTEM_TIME;
ALTER TABLE [dbo].[TABLE] DROP COLUMN [SysStartTime], [SysEndTime];
Weitere Informationen finden Sie unter dem folgenden Link (oder in der offiziellen Microsoft-Dokumentation, auf die bereits verwiesen wurde): http://www.sqlservercentral.com/articles/SQL+Server+2016/147087/
Das nächstliegende Äquivalent ist wahrscheinlich Datenbank-Snapshots . Sie können einen Datenbank-Snapshot zum gewünschten Zeitpunkt erstellen und dann einen Bericht über diesen Snapshot erstellen. Im Gegensatz zu Flashbacks müssen die Zeitpunkte, zu denen die SQL Server-Snapshots erstellt werden, vorher festgelegt werden.
Ja, wir können die Datenerfassung ändern y Verfolgung von Änderungen Funktionen, die in die Mechanismen von SQL Server eingebaut sind und sehr viel ähnlich wie Flashback in Oracle.
Wenn Sie die Funktionen der Änderungsdatenerfassung auf eine Datenbanktabelle anwenden, wird eine Spiegelung der verfolgten Tabelle mit derselben Spaltenstruktur wie die Originaltabelle erstellt, jedoch mit zusätzlichen Spalten, die die Metadaten enthalten, die zur Zusammenfassung der Art der Änderung in der Datenbanktabellenzeile verwendet werden. Der SQL Server-DBA kann dann die Aktivität für die protokollierte Tabelle mithilfe dieser neuen Audittabellen leicht überwachen.
Verfolgung von Änderungen ist eine leichtgewichtige Lösung, die einen effizienten Mechanismus zur Verfolgung von Änderungen für Anwendungen bietet. Um Anwendungen in die Lage zu versetzen, Änderungen an Daten in einer Datenbank abzufragen und auf Informationen zuzugreifen, die mit den Änderungen in Zusammenhang stehen, mussten Anwendungsentwickler in der Regel benutzerdefinierte Mechanismen zur Änderungsverfolgung implementieren. Die Erstellung dieser Mechanismen war in der Regel mit viel Arbeit verbunden und umfasste häufig eine Kombination aus Triggern, Zeitstempelspalten, neuen Tabellen zum Speichern von Nachverfolgungsinformationen und benutzerdefinierten Bereinigungsprozessen.
Verschiedene Arten von Anwendungen haben unterschiedliche Anforderungen an den Umfang der Informationen, die sie über die Änderungen benötigen. Anwendungen können die Änderungsverfolgung nutzen, um die folgenden Fragen zu den Änderungen zu beantworten, die an einer Benutzertabelle vorgenommen wurden:
Welche Zeilen haben sich in einer Benutzertabelle geändert?
Nur die Tatsache, dass sich eine Zeile geändert hat, ist erforderlich, nicht aber, wie oft sich die Zeile geändert hat oder welche Werte zwischenzeitlich geändert wurden.
Die neuesten Daten können direkt von der Tabelle, die verfolgt wird, abgerufen werden.
Hat sich eine Reihe geändert?
Die Tatsache, dass eine Zeile geändert wurde, und die Informationen über die Änderung müssen zu dem Zeitpunkt, zu dem die Änderung vorgenommen wurde, in derselben Transaktion verfügbar und aufgezeichnet sein.
Weitere Informationen über die Verwendung von Change Data Capture (CDC) und Change Tracking in SQL Server finden Sie unter Pinal Dave's Post .
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Nun, da Sql Server MVCC hat sollte es trivial tho sein, richtig?