在SQL Server中检查模拟

时间:2013-12-30 16:59:43

标签: sql sql-server impersonation

我有几个使用UserA和UserB的数据库。 在其中一些数据库中,模拟已被授予(GRANT IMPERSONATE ON LOGIN::UserA TO UserB),在其他数据库中,用户没有模仿。

如果用户是否进行了模拟,我如何查询查询? 在这个系统表中是否存在标志?

1 个答案:

答案 0 :(得分:3)

我找到了这个查询...

SELECT  DB_NAME() AS 'database'
        ,pe.permission_name
        ,pe.state_desc
        ,pr.name AS 'grantee'
        ,pr2.name AS 'grantor'
FROM    sys.database_permissions pe
JOIN    sys.database_principals pr
        ON  pe.grantee_principal_id = pr.principal_Id
JOIN    sys.database_principals pr2
        ON  pe.grantor_principal_id = pr2.principal_Id
WHERE   pe.type = 'IM'

下面...

http://tenbulls.co.uk/2012/01/30/what-are-the-impersonation-rights-for-my-database-users/