EXECUTE AS
时遇到了一些问题。存储过程从source_db
读取数据,对其进行聚合,并将结果存储在target_db
中。
存储过程本身位于target_db
中。我有一个专用的登录账户,并将其映射到source_db
和target_db
中的用户,以供存储过程的所有者使用(因此在source_db
和target_db
中都有一个名为app_agent
的用户,对应登录账户app_agent
)。
如果我以app_agent
身份登录,并执行...
EXEC target_db.app_agent_schema.import_data
一切都运行正常。但是如果我改变
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
尝试执行时,它会抛出以下错误:
服务器主体“app_agent”无法在当前安全上下文下访问数据库“source_db”。
我正在使用SQL Server 2008。
有人能指出我的错误吗?
谢谢
更新
经过一些研究,我发现ALTER DATABASE target_db SET TRUSTWORTHY ON
可以解决问题,但这似乎不是正确的解决方案...