在一些存储过程中,我必须将安全上下文更改为更强大的登录。 我试过这样的事情:
USE ProjectsDB
EXECUTE AS login = 'sa'
--SOME OPERATIONS
REVERT;
但是我收到以下错误消息:
Msg 15406, Level 16, State 1, Line 3
Cannot execute as the server principal because the principal "sa" does not exist,
this type of principal cannot be impersonated, or you do not have permission.
'sa'登录存在所有必需的权限。 可能是什么问题?
伊兰。
答案 0 :(得分:3)
您需要拥有“IMPERSONATE”权限才能执行此操作。查看GRANT IMPERSONATE
声明。
除此之外,我认为在sql server中执行此操作的最佳方法(而不是将权限级别提升到SA)是:
如果您需要“服务器范围权限”,则可选:
如果您需要“跨数据库权限”,则需要更多选项
SQL Server将通过证书将所有用户/登录权限链接在一起,当您执行签名过程时,它将使用链接到证书的用户的权限。