ath*_*hom 14 sql sql-server ssms sql-server-2008 sql-server-2008-r2
我正在对数据库运行以下查询:
execute as user = 'domain\username'
select * from fn_my_permissions(null, 'DATABASE')
order by subentity_name, permission_name
revert;
Run Code Online (Sandbox Code Playgroud)
但是抛出以下错误:
Cannot execute as the database principal because the principal "dev\spadmin" does not exist, this type of principal cannot be impersonated, or you do not have permission.
用户是数据库的dbo,当我打开管理工作室中的属性时,我可以看到它与该登录相关联.EXECUTE AS LOGIN = 'domain\username'另一方面,Running 确实返回结果.如果我明确地运行EXECUTE AS USER = 'dbo',我会得到结果.我也有一个不同的数据库,其中同样的场景返回带有EXECUTE AS USER和的结果EXECUTE AS LOGIN.
在另一个使用不同用户的情况下,我已经跑了EXECUTE AS LOGIN = 'domain\username'但是我没有得到结果,但我确实得到了结果EXECUTE AS USER = 'domain\username'.
这些方案中的两个用户都与db_owner作为数据库成员的登录相关联.
谁能告诉我为什么这些查询没有返回我期望的结果?如果我遗漏了任何重要信息,请告诉我.谢谢!
RBa*_*ung 11
问题是因为Login domain\username是数据库的dbo,这也意味着该数据库中相应User的名称是dbo和不是 domain\username.
| 归档时间: |
|
| 查看次数: |
60197 次 |
| 最近记录: |