Suivi qui a effectué le changement identifié par le CDC.
Dans la lignée de mon hack datetime, j'ai essayé la même approche en ajoutant suser_sname en tant que nouveau champ avec une valeur par défaut sur la table de suivi des modifications cdc. Mais cela semble renvoyer le propriétaire du processus cdc et non l'utilisateur qui a initié le changement sur la table de base. J'ai également essayé original_login mais cela renvoie la connexion au compte de service SQL. Encore une fois, probablement associé au processus cdc et non à l'utilisateur qui a initié le changement.
J'ai trouvé une question similaire sur le débordement de pile, mais sans réponse autre que le suivi des modifications depuis le frontal ou via un déclencheur, ce qui semble aller à l'encontre du but de l'utilisation de cdc. Je ne republierais pas, mais comme l'original était sur stackoverflow, j'ai pensé essayer ici, surtout si R2 ou 2012 a introduit une meilleure méthode.
Donc, en bref: comment savoir qui a effectué le changement dans la capture des données de changement?
Vous pouvez ajouter la colonne et avoir un déclencheur sur la table pour remplir l'utilisateur lors de l'insertion / mise à jour / suppression et cdc le stockera ensuite. Vous pouvez récupérer le nom d'utilisateur à partir de l'interface utilisateur en passant le nom d'utilisateur à l'aide des informations de contexte ou de la session réelle
la source
Pourriez-vous ajouter un champ UpdatedBy sur la table principale, le définir par défaut sur SUSER_NAME () ou ORIGINAL_LOGIN () et faire remplir ces données par le CDC? Je crois que cela vous donnera les mêmes informations que vous recherchez.
la source