Verfolgung, wer die von CDC identifizierte Änderung vorgenommen hat.
In Anlehnung an meinen datetime-Hack habe ich den gleichen Ansatz versucht, indem ich suser_sname als neues Feld mit dem Standardwert in der cdc change track-Tabelle hinzugefügt habe. Dies scheint jedoch den Eigentümer des cdc-Prozesses und nicht den Benutzer zurückzugeben, der die Änderung für die Basistabelle initiiert hat. Ich habe auch original_login ausprobiert, aber das gibt die Anmeldung für das SQL-Dienstkonto zurück. Wiederum wahrscheinlich mit dem cdc-Prozess verbunden und nicht mit dem Benutzer, der die Änderung initiiert hat.
Ich fand eine ähnliche Frage zum Stapelüberlauf, aber keine andere Antwort als das Verfolgen von Änderungen vom Frontend oder über einen Trigger, was den Zweck der Verwendung von cdc zu vereiteln scheint. Ich würde nicht erneut posten, aber da das Original auf Stackoverflow war, dachte ich, ich würde es hier versuchen, besonders wenn R2 oder 2012 einen besseren Weg eingeführt haben.
Kurz gesagt: Woher weiß ich, wer die Änderung bei der Erfassung von Änderungsdaten vorgenommen hat?
quelle
Sie könnten die Spalte hinzufügen und einen Auslöser in der Tabelle haben, um den Benutzer beim Einfügen / Aktualisieren / Löschen zu füllen, und cdc würde dies dann speichern. Sie können den Benutzernamen entweder über die Benutzeroberfläche abrufen, indem Sie den Benutzernamen mithilfe von Kontextinformationen oder aus der eigentlichen Sitzung übergeben
quelle
Könnten Sie ein UpdatedBy-Feld zur Haupttabelle hinzufügen, es auf den Standardwert SUSER_NAME () oder ORIGINAL_LOGIN () setzen und diese Daten vom CDC ausfüllen lassen? Ich glaube, das gibt Ihnen die gleichen Informationen, die Sie suchen.
quelle