Sql 从可信数据库拒绝模拟
我使用EXECUTE-AS允许特权最低的用户作为系统管理员运行一些SQL存储过程。我知道我需要源数据库(运行存储过程的数据库)上的trustry=ON,以便在我服务器上的其他数据库上模拟sysadmin。但是,即使已授予模拟且Trusty=ON,我在尝试以模拟用户身份接触其他数据库时仍会出现以下错误:Sql 从可信数据库拒绝模拟,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我使用EXECUTE-AS允许特权最低的用户作为系统管理员运行一些SQL存储过程。我知道我需要源数据库(运行存储过程的数据库)上的trustry=ON,以便在我服务器上的其他数据库上模拟sysadmin。但是,即使已授予模拟且Trusty=ON,我在尝试以模拟用户身份接触其他数据库时仍会出现以下错误: The server principal [least_privileged user] is not able to access the database XXX under the
The server principal [least_privileged user] is not able to access the database XXX under the current security context.
(是的,我知道模块签名是更安全的选择。我不想走这条路。)
有人能帮我吗?- 使用
作为所有者执行
- 确保过程位于
架构中dbo
- 确保数据库所有者对实例具有系统管理员权限。我 您已经注意到,SQL登录在这方面比其他登录更有效 从窗口
- 检查数据库的
trustry=on
这样,您不需要额外的模拟授权,但这是一种不太安全的解决方案。不过,它可以工作。存储过程EXECUTE AS子句允许您模拟数据库用户,而不是登录名。您可以将该用户添加到另一个数据库以防止错误。您到底在做什么,需要系统管理员角色成员身份?