Nein, es gibt keine. Jede Art von Verfolgung der letzten Aktualisierung um würde zu einem schwerwiegenden Leistungsproblem führen, da alle Aktualisierungen aller Transaktionen versuchen würden, den einen Datensatz zu aktualisieren, der die Verfolgung der letzten Aktualisierung um verfolgt. Dies würde effektiv bedeuten, dass zu jedem Zeitpunkt nur eine Transaktion die Tabelle aktualisieren kann, und alle anderen Transaktionen müssen warten, bis die erste festgeschrieben wird . Vollständige Serialisierung. Die Anzahl der Administratoren / Entwickler, die bereit sind, solche Performance-Einbußen hinzunehmen, um zu wissen, wann das letzte Update durchgeführt wurde, ist wahrscheinlich gering.
Sie sind also gestrandet, um mit benutzerdefiniertem Code umzugehen. Dies bedeutet Trigger, da die Alternative (Erkennen anhand von Protokolldatensätzen) ein Vorrecht ist, das nur für die Transaktionsreplikation reserviert ist (oder es ist CDC- Alter-Ego). Beachten Sie, dass Sie genau das oben erwähnte Serialisierungsproblem haben, wenn Sie versuchen, es über eine Spalte "Zuletzt aktualisiert um" zu verfolgen. Wenn die gleichzeitige Aktualisierung wichtig ist, müssen Sie einen Warteschlangenmechanismus verwenden (der Auslöser verwendet ein INSERT, und dann aggregiert ein Prozess die eingefügten Werte, um das zuletzt aktualisierte Datum zu formulieren). Versuchen Sie nicht, mit einer 'cleveren' Lösung zu schummeln, wie zum Beispiel die aktuelle Identität zu überprüfen oder sys.dm_db_index_usage_stats nachzuschlagen . Und auch eine 'updated_at'-Spalte pro Datensatz, wie Rails-Zeitstempel,
Gibt es eine "leichte" Alternative? Eigentlich gibt es eines, aber es ist schwierig zu sagen, ob es für Sie funktioniert und es ist schwierig, es richtig zu machen: Benachrichtigungen abfragen . Abfragebenachrichtigung genau das tut, wird es eine Benachrichtigung einrichten, wenn jede Datenänderungen hat und Sie müssen Ihre Abfrage aktualisieren. Obwohl die meisten Entwickler nur mit der .Net-Inkarnation als SqlDependency vertraut sind, kann die Abfragebenachrichtigung als langlebiger, beständiger Mechanismus zum Erkennen von Datenänderungen verwendet werden. Im Vergleich zu echtem Änderungs-Tracking wird es sehr leicht sein, und seine Semantik entspricht eher Ihren Anforderungen (etwas, alles , was geändert wurde, also müssen Sie die Abfrage erneut ausführen).
Aber am Ende würde ich an Ihrer Stelle meine Annahmen wirklich überdenken und zum Zeichenbrett zurückkehren. Möglicherweise können Sie den Protokollversand oder die Replikation verwenden, um eine Berichtsdatenbank auf einem anderen Server einzurichten. Was ich zwischen den Zeilen gelesen habe, ist, dass Sie eine richtige ETL-Pipeline und ein Analytics Data Warehouse benötigen ...