代码之家  ›  专栏  ›  技术社区  ›  Richard B

SQL Server中的跨数据库授权

  •  0
  • Richard B  · 技术社区  · 7 年前

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

    十、 除其他外,更新数据库B中的表Y

    我已将X上的execute授予User1,但当User1调用X时,会出现以下错误:

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

    如何正确地将更新权限授予User1?我不想直接将表Y的插入/更新/删除权限授予User1

    1 回复  |  直到 7 年前
        1
  •  2
  •   sepupic    7 年前

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

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

    链接: Enabling Cross-Database Access in SQL Server .

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