我正在使用SQL Server 2005 我有一个用户。我们称他为User1。他有这样的访问权限:
DB1 (read,write,execute)
DB2 (read,execute)
以下是发生的事情:
DB1..Table1 (can read, just fine)
DB1..Proc1 (reads Table1. works fine)
DB2..Table2 (can read, works)
DB2..Proc2 (reads Table2, works)
DB1..Proc3 (reads Table1 with a join on DB2..Table2...
消息916,级别14,状态1.服务器主体“sa”无法在当前安全上下文下访问数据库“DB2”。)
BUT!
相同的SELECT ... JOIN在不属于存储过程的情况下工作正常。
这是一个严重的头脑,它正在阻碍我的工作。有什么想法吗?
答案 0 :(得分:0)
根据上面的评论,dbo未映射到服务器上的登录信息可能是您的问题。试试alter authorization on database::[yourdb] to [login]
(显然会替换你的db并使用适当的值登录)。
答案 1 :(得分:0)
我明白了。 DB1需要标记为可信赖。安装程序完成了它,但更新程序显然需要在它运行完毕后再次执行它。