Question

La base de données suit tous les changements via le mécanisme " Change Data Capture Capture ".Je dois ajouter des informations supplémentaires sur les utilisateurs qui apportent ces modifications. Les utilisateurs suivants ne sont pas des utilisateurs SQL Server.L'autorisation de sécurité est effectuée via un mécanisme extérieur.

Je veux ajouter une table d'assistance avec des colonnes " start_lsn " et " userid " pour associer une transaction avec l'utilisateur autorisé. Y a-t-il un moyen de déterminer la valeur " start_lsn ", qui correspond à la transaction en cours exécutée dans le code de l'application?

Était-ce utile?

La solution

actuellement, j'ai trouvé la solution suivante:

1)

  • Créez une table supplémentaire (par exemple, l'utilisateur "useractivity" ), qui a le "ID" et colonnes;

  • Utilisez la colonne "ID" comme clé primaire;

  • Activez l'option CDC pour ce tableau.

2)

  • envelopper toutes les opérations de modification de données avec une portée transaction ;

  • Ajoutez un nouvel enregistrement de données dans cette table avec le courant "userid" pendant une transaction particulière:

    • commence transaction exclusive

    • effectuer "manipulation de données";

    • Insérez des informations sur "userid" dans la table Table.

Étant donné que la transaction est exclusive et que toutes les opérations ont été effectuées dans une seule portée de transaction, la valeur "last_lsn" ( "start_lsn" la valeur est identique.

Après cela, à l'aide de l'opérateur de jointure, fusionnez les données de la table avec des informations de manipulation de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top