Wie man Letzte insert/update/delete-datetime in Sql Server 2005?
nicht ein Duplikat von meine Vorherige Frage
Gibt es eine Möglichkeit, um die neuesten datetime, wenn eine Tabelle/Datenbank ein insert/update/delete in Sql Server 2005? Vorzugsweise ohne erstellen von Triggern..
Ich weiß, dass, wenn Sie müssen das Letzte update pro Zeile, benötigen Sie Trigger. Aber ich bin nicht sicher, wenn Sie benötigt werden, wenn Sie nur wollen, um das Letzte update für die gesamte Tabelle.
Die Antwort, die Sie akzeptiert, ist irreführend, am besten.
InformationsquelleAutor Jader Dias | 2009-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Leicht die Letzte Eingefügt/Aktualisiert/Gelöscht werden, die Termine wie Folgt:
Mayeb habe ich etwas verpasst, aber in der SQL-SERVER-2008 dieser zeigt keine Veränderungen in der
LASTUPDATED
wenn Zeilen eingefügt/aktualisiert/gelöscht. Nur wenn die Struktur der Tabelle geändert wurde (Spalten/Indizes Hinzugefügt, etc..). ist es das, was der OP gedacht?Vielleicht verwechselst du es mit der
sys.objects.modify_date
Spalte, die für die Tabellen zeigen, nicht das Letzte Datum der änderung der Struktur. Die Werte in derLASTUPDATED
Spalte in diesem code sind auf der Grundlage der Ergebnisse derSTATS_DATE
Funktion.Dies nicht zu tun, was gefragt ist. Es zeigt den Zeitpunkt der letzten Statistik wurden aktualisiert. Es ist durchaus möglich, insert/delete/update-Zeilen, ohne dass ein Statistik-update. Umgekehrt könnte es einen Wartungsplan, Statistiken aktualisiert, auch wenn sich nichts geändert hat.
InformationsquelleAutor Manoj Kanojiya
InformationsquelleAutor KAWAMO
Als die beiden vorherigen Antworten zeigen, gibt es wirklich keine built-in-Funktionalität in SQL Server, die leicht zugänglich für Ihre Anforderungen.
Es gibt eine Tonne von dynamischen management-sichten, die kann Ihnen sagen, einige Ihrer Punkte von Interesse, z.B.
sys.dm_db_index_usage_stats
die Sie informiert, wenn ein bestimmter index hat seine letzten suchen oder zu aktualisieren.Aber es gibt wirklich nichts in der box per se, die Sie nutzen könnten, um alle Informationen, die Sie suchen, Sie wirklich haben, dies selbst zu tun, hinzufügen, z.B. datetime-Felder zu Ihren Tabellen und füllen Sie mit Trigger.
Sorry, ich kann es nicht geben Ihnen keine bessere Nachricht - das ist einfach so wie es ist jetzt.
In SQL Server 2008 müssen Sie zusätzliche neue Funktionen, die möglicherweise für einige deiner Anforderungen - check out:
Marc
InformationsquelleAutor marc_s
Gegeben, gibt es bisher keine Antworten, hier meine 2 cents:
Ich dachte über die Verwendung von Zeitstempeln für avoinding löst, aber Sie können nicht konvertieren Timestamp, Datetime.
BEARBEITEN:
Oder vielleicht können Sie ein "metatable", wo in den Triggern Sie die änderung speichern, Termine
Ich hoffe, dass es nützlich sein
Ja, du hast Recht, könntest du bitte den code ändern, so dass es spiegelt die änderungen, die Sie erwähnt? ich will nicht belästigt werden, dass für
InformationsquelleAutor Jhonny D. Cano -Leftware-
Über kurze Zeiträume (seit Start des Servers) prüfen Sie die sys.dm_db_index_usage_stats
last_user_update column
. Aber da zählt nur die updates seit dem Serverstart, es kann nicht verwendet werden, die über einen langen Zeitraum.Für längere Zeit, wenn die Tabelle nicht riesig, Ihre Anwendung speichern kann die Tabelle CHECKSUM_AGG(ALLE). Würde man nur brauchen, um neu berechnen, das einmal am Beginn der Anwendung, und vergleichen Sie Sie mit den vorher gespeicherten Wert. Weiter kann die Anwendung erkennen, die änderungen, die mit der DMV. Bei beenden der Anwendung Sie sollten speichern die aktuelle Tabelle Prüfsumme.
InformationsquelleAutor Remus Rusanu
ohne Trigger: Sie könnten eine LastChgDate Spalte auf der Tabelle, und legen Sie es, wenn Sie einfügen/aktualisieren/löschen einer Zeile. Sie müssten, um zu "löschen" von usig eine status-Spalte auf "D" oder sowas. Legen Sie einen index auf dieser Spalte, und wählen Sie die MAX (), um zu sehen, wenn eine änderung vorgenommen wurde.
hin und her zwischen einer log-Tabelle und die datetime-Spalte in der aktuellen Tabelle scheint umständlich
InformationsquelleAutor KM.
Gut, Sie könnte halten Sie eine Spalte mit einem "LastUpdateDate" , ist das aktuelle server-Datum/Zeit auf eine insert-oder update. Dann kannst du einfach eine Abfrage nach der Zeile mit der letzten LastUpdateDate.
InformationsquelleAutor Keith
Möchte ich hinzufügen, Ändern Tracking-mix - im Gegensatz zu Change Data Capture, ist es nicht ein Unternehmen nur feature.
Lesen Sie mehr über es http://msdn.microsoft.com/en-us/library/cc280462.aspx
Ähnlich
sys.dm_db_index_usage_stats
, die Daten nicht für immer dort bleiben (obwohl es überlebt server neu gestartet wird und konfigurierbar ist), und Sie haben zu extrahieren und speichern Sie das jeweilige Stück information, die Sie suchen.MDD
InformationsquelleAutor Mike DeFehr
Einfach! Zuerst fügen Sie ein "LastUpdated" - Spalte. Geben Sie den Standardwert " GetDate(). Dieser wird sich darum kümmern Insert-Anweisungen. Zweitens, fügen Sie eine On Update-Trigger, der updates LastUpdated, um GetDate(). Updates sind nun abgedeckt. Schließlich fügen Sie ein wenig/Feld vom Typ boolean IsDeleted mit dem Standardwert 0. Sollte ein Benutzer wollen, um eine Zeile zu löschen, drehen Sie den-bit. Da beim "löschen" einer Zeile, Sie sind eigentlich die Aktualisierung der IsDeleted-Feld (und daher die Verwendung einer Update-Aktion), Löscht jetzt Zeitstempel.
Erhalten Sie die neuesten Aktivitäten auf dem Tisch:
um nur die timestamp:
Um weitere Informationen zu erhalten:
Zugegeben, es ist nicht schmerzfrei, aber es WIRD die Letzte Aktivität auf dem Tisch, egal was es war.
InformationsquelleAutor Pulsehead