SQL Server: modification de la propriété "Nom de l'application" à des fins d'audit

Comme nous n'implémentons pas les users de nos applications en tant qu'users dans le server SQL, lorsque le server d'applications se connecte à une database, chaque application utilise toujours les mêmes informations d'identification pour se connecter à chaque database.

Cela présente un problème d'audit. En utilisant des triggersurs, nous voulons stocker chaque mise à jour, insert et supprimer et atsortingbuer chacun à un user particulier. Une solution possible consiste à append une colonne "mise à jour par l'user" à chaque table et à la mettre à jour à chaque fois. Cela signifie une nouvelle colonne sur chaque table et un nouveau paramètre sur chaque procédure stockée. Cela signifie également que vous ne pouvez effectuer que des suppressions logicielles.

Au lieu de cela, je propose d'utiliser la propriété Nom de l'application de la string de connection et de la lire avec la propriété App_Name () à l'intérieur du triggersur. J'ai testé cela avec une application simple et cela semble fonctionner (le format pourrait être le suivant: App = MyApp | User = 100).

La question pour vous, c'est: est-ce une mauvaise idée et en avez-vous une meilleure?

J'utilise SET CONTEXT_INFO pour cela. C'est juste ce dont vous avez besoin.

Cela semble certainement être une solution réalisable, bien que vous deviez injecter le nom d'user dans la string de connection chaque fois que votre application se charge. Notez que cette solution ne fonctionnera probablement pas avec une application Web, car votre string de connection sera différente à chaque fois, ce qui pourrait entraîner d'énormes problèmes de pool de connection.

Une autre option est de récupérer le nom d'hôte / l'adresse IP (SELECT nom_hôte ()) et de le stocker à la place.

Vous n'avez pas forcément besoin d'un nouveau paramètre sur chaque procédure stockée, car vous pouvez modifier chaque procédure stockée (ou le triggersur) pour insert automatiquement le nom App_Name / Hostname.

Un inconvénient potentiel est que toutes les modifications effectuées via Management Studio n'auront pas le App_Name personnalisé, et vous serez laissé avec "Microsoft Management Studio" en tant qu'user.

Nous utilisons la propriété Nom de l'application pour contrôler les triggersurs d'audit et n'avons constaté aucun problème lors de son utilisation. Nous n'avons pas remarqué de problème de vitesse (bien que dans notre cas, nous n'effectuons pas d'audit pour certaines applications). le time de ne pas faire quelque chose prend :))