Déterminer quelle application modifie une valeur de database SQL

Je suis confronté à un problème où la database héritée que de nombreuses applications peuvent lire / écrire ne cesse de changer, et je n'arrive pas à comprendre ce qui change.

Mon application change une certaine valeur dans une certaine rangée de la table, mais quelque chose la change encore après une semaine et je suis perplexe pour find ce qu'elle pourrait être.

Est-il possible de joindre un événement / triggersur à cette valeur, puis de stocker / envoyer par email les détails de ce qui l'a changé? ou au less à quelle heure il a été changé?

Si vous avez access aux strings de connection pour vos applications héritées, ajoutez le mot-key Application Name à la string de connection. Quelques infos ici.

Du côté server, créez un triggersur pour la table que vous voulez suivre. Dans le journal de triggersment app_name() dans une table de journal. Comme ça:

 create sortinggger Tracker on TableName after insert, update, delete as insert LogTable(TableName, ApplicationName) values('TableName', app_name()) go 

De plus, si vous avez un user dédié par application, vous pouvez vérifier et save la valeur system_user .

Si vos applications hébergées par différents servers, vous pouvez également append l'adresse IP du client. Vous pouvez le vérifier comme ceci: select client_net_address from sys.dm_exec_connections where session_id = @@SPID .

En outre, vous pouvez utiliser profiler pour voir tous ces parameters.

Mais tout cela avec la mise en garde que vous pouvez mettre à jour vos strings de connection.