我在 sql server 数据库中设置了多个视图。这些视图是从在其声明中具有 WITH EXECUTE AS 'proxyuser' 子句的存储过程中选择的。它执行的 select 语句是动态创建的,并使用 sp_executesql 存储过程执行。一切都正常工作,直到有必要在其中一个视图的定义中包含对不同数据库中表的连接,以便视图从它所在的数据库和同一服务器上的另一个数据库中进行选择。
我得到的错误是:服务器主体“proxyuser”无法在当前安全上下文下访问数据库“mydb”。
这是我尝试过的:
从第二个数据库中删除代理用户并将登录名映射到此处推荐的数据库.. http://sqlmusings.wordpress.com/2008/06/12/issue-server-principal-is-not-able-to-access -当前安全上下文下的数据库/
按照此处的建议启用跨数据库所有权链接.. http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/07dcab8c-b830-4ca9-8afc-3e75772f44d3/
并且我的方案不符合 Microsoft 支持文章 #913422 中列出的要求,该文章描述了相同的错误消息。代理使用 Sql Server 身份验证,而不是 Windows 身份验证。
有任何想法吗?
提前致谢。