2010-11-04 4 views
1

Voici le problème en bref. J'ai une application de bureau qui se connecte à une base de données SQL Server. J'ai une table d'audit qui suit toutes les modifications apportées à la base de données au niveau db. L'une des exigences est de suivre l'identifiant de l'utilisateur basé sur la connexion Windows. Y at-il un moyen de le faire via des déclencheurs sur la base de données?Suivi de l'ID utilisateur Windows sur une base de données

J'ai essayé d'utiliser USER_NAME (USER_ID()) mais tout ce que je reçois est « dbo »

Ou devrais-je créer une procédure stockée séparée pour passer dans l'ID utilisateur de l'application de bureau à la base de données? Je ne veux pas aller dans cette voie car si quelqu'un change le serveur db dans sql alors je ne serai pas capable de le suivre.

Répondre

3
  • ORIGINAL_LOGIN renvoie le nom de la connexion qui est connecté à l'instance de SQL Server
  • SUSER_SNAME() renvoie le nom de connexion actuel

Les deux retour le même nom de connexion, sauf si EXECUTE AS est utilisé .

2

Utilisez ORIGINAL_LOGIN() ce qui est utilisé pour l'audit car il renvoie l'identité de l'utilisateur qui s'est connecté, que le contexte soit usurpé ou non.

Cela a une réponse similaire à ce à quoi j'ai répondu il y a un moment ici ->SQL Server - current user name