9 Stimmen

Wie bekomme ich das letzte Einfüge-/Update-/Lösch-Datumzeit auf dem Sql Server 2005?

Nicht doppelt von meiner vorherigen Frage

Gibt es einen Weg, das neueste Datum und Uhrzeit zu erhalten, wenn in SQL Server 2005 eine Tabelle/Datenbank eingefügt/aktualisiert/gelöscht wurde? Am besten ohne Trigger zu erstellen..

Ich weiß, dass man Trigger benötigt, wenn man das letzte Update pro Zeile benötigt. Aber ich bin mir nicht sicher, ob sie benötigt werden, wenn man einfach das letzte Update für die gesamte Tabelle erhalten möchte.

1voto

KM. Punkte 98297

Ohne Trigger: Sie könnten eine LastChgDate-Spalte in der Tabelle haben und diese beim Einfügen/Aktualisieren/Löschen eines Datensatzes festlegen. Sie müssten "löschen", indem Sie eine Statusspalte verwenden, die auf "D" oder etwas ähnliches gesetzt ist. Legen Sie einen Index auf diese Spalte und wählen Sie MAX(), um zu sehen, wann eine Änderung vorgenommen wurde.

1voto

Keith Punkte 5219

Nun, Sie könnten eine Spalte mit einem "LastUpdateDate" beibehalten, das beim Einfügen oder Aktualisieren auf das aktuelle Serverdatum/-zeit gesetzt wird. Dann können Sie einfach nach der Zeile mit dem neuesten LastUpdateDate abfragen.

1voto

Mike DeFehr Punkte 1164

Ich würde das Änderungs-Tracking hinzufügen - im Gegensatz zum Änderungsdatenerfassung ist es keine Funktion nur für Unternehmen.

Erfahren Sie mehr darüber unter http://msdn.microsoft.com/en-us/library/cc280462.aspx

Ähnlich wie bei sys.dm_db_index_usage_stats sind die Daten nicht für immer verfügbar (obwohl sie Serverneustarts überleben und konfigurierbar sind) und Sie müssen das spezifische Stück Informationen extrahieren und dauerhaft speichern, nach dem Sie suchen.

MDD

0voto

Pulsehead Punkte 4840

Einfach! Fügen Sie zuerst eine "LastUpdated" Spalte hinzu. Geben Sie ihm als Standardwert GetDate(). Dies kümmert sich um INSERT-Anweisungen. Zweitens fügen Sie einen On Update Trigger hinzu, der LastUpdated auf GetDate() aktualisiert. Updates sind jetzt abgedeckt. Fügen Sie schließlich ein Bit/Boolean-Feld IsDeleted mit dem Standardwert 0 hinzu. Möchte ein Benutzer eine Zeile löschen, schalten Sie das Bit um. Da beim "Löschen" einer Zeile tatsächlich das IsDeleted-Feld aktualisiert wird (und daher ein Update-Vorgang verwendet wird), werden Löschvorgänge nun zeitgestempelt.

Um die neueste Aktivität in der Tabelle zu erhalten: um nur den Zeitstempel zu erhalten:

SELECT MAX(LastUpdated) FROM MyTable

Um weitere Informationen zu erhalten:

SELECT MAX(LastUpdated), ID /*oder was auch immer Sie wissen müssen*/ FROM MyTable

CodeJaeger.com

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.

Powered by:

X