8
votes

SQL Server exécute l'impersonnation

Quelle est la diffrence entre ... xxx

et xxx

J'exègre une procédure de base de données croisée sous ces connexions et elle Fonctionne avec l'exécution comme connexion mais pas l'exécution en tant qu'utilisateur. Il dit que le serveur principal "testutilisateur" est capable d'accéder à la base de données "xxx" dans le contexte sécurisé.

quand i Sélectionnez system_user après que les deux commandes, je vois que c'est défini sur 'testutilisateur'


0 commentaires

3 Réponses :


13
votes

Exécuter en tant que connexion fournit une impersonnation à l'ensemble du serveur, car les connexions sont sur un niveau de serveur. Étant donné que les utilisateurs sont définis par base de données, exécutant en tant qu'utilisateur L'impersonnation s'applique uniquement à une base de données spécifique, c'est pourquoi vous voyez l'erreur lorsque vous croisez des bases de données.


0 commentaires

2
votes

Login Scope est au niveau du serveur pendant que la portée de l'utilisateur est au niveau de la base de données actuel

http://msdn.microsoft.com/en-us/library/ MS181362.aspx


0 commentaires

3
votes

L'exécuté tel que peut être ajouté aux processus, fonctions, déclencheurs, etc.

à exécuter comme: p> xxx pré>

Dans ce cas, vous utilisez le propriétaire em> du module appelé. p>

Vous pouvez également imiter auto em>, ou utilisateur em> créer ou modifier le module ou. .. IMPERSONATE CALLER EM>, qui permettra de module de prendre les autorisations de l'utilisateur actuel, ou ... Impersonate propriétaire em>, qui prendra la permission du propriétaire de la procédure appelée ou ... Impersonate 'user_name' code>, qui imitera un utilisateur spécifique ou ... IMPERSONATE 'LOGIN_NAME' CODE> AVEC IMPOSONATE D'UNE Connexion spécifique. P>

Définition de la permission sur des objets tels que les procédures stockées peuvent être réalisées avec P>

select * from MyTable
go


0 commentaires