我在数据库A中有一个存储过程X.
除其他事项外,更新数据库B中的表Y
我已将X上的执行授予User1,但是当User1调用X时,它会收到以下错误:
The UPDATE permission was denied on the object 'Y', database 'B', schema 'dbo'.
如何正确授予User1更新权限?我不想直接将表Y的插入/更新/删除权限授予User1
答案 0 :(得分:2)
如果所有对象都拥有相同的所有者(dbo)并且数据库所有者是相同的,那么您只需要启用跨数据库所有权链,即您应该为两个数据库执行
ALTER DATABASE A SET DB_CHAINING ON;
ALTER DATABASE B SET DB_CHAINING ON;
链接:Enabling Cross-Database Access in SQL Server。
User1应该映射到第二个数据库。