SQL 服务器中的跨数据库授权

Cross Database Grants in SQL Server

我在数据库 A 中有一个存储过程 X。

X,除其他外,更新数据库 B 中的 tableY

我已将 X 上的执行授权给 User1,但是当 User1 调用 X 时出现以下错误:

The UPDATE permission was denied on the object 'Y', database 'B', schema 'dbo'.

如何正确授予User1更新权限?我不想直接将 table Y 上的 Insert/Update/Delete 权限授予 User1

如果您的所有对象都具有相同的所有者 (dbo) 并且数据库所有者相同,您所需要的只是启用跨数据库所有权链,即您应该为两个数据库都做

ALTER DATABASE A SET DB_CHAINING ON;  
ALTER DATABASE B SET DB_CHAINING ON;

Link: Enabling Cross-Database Access in SQL Server.

User1 应该映射到第二个数据库。