Stored procedures 存储过程访问同一服务器上的多个数据库失败
我正在尝试从已被授予所述存储过程执行权限的有限权限登录运行存储过程。存储过程访问同一服务器上的两个数据库。在执行存储过程时,我收到一个错误,该错误表示: 服务器主体“LimitedUser”无法在当前安全上下文下访问数据库“Database2” 一些背景: 我最近的任务是将两个不同的数据库服务器迁移到一个数据库中。我已经备份并导出了必要的数据库,并将它们恢复到新服务器中。较旧的数据库是MS sql server 2000(用于数据库2)和MS sql server 2005(用于数据库1-上述存储过程所在的位置) 我发现一些线索似乎表明,由于我导入了数据库,所有者不同,这会导致问题。因此,我在这两个数据库上运行了“exec sp_changedbowner'sa'”,以确保它们拥有相同的所有者。在从LimitedUser运行存储过程时,我仍然遇到相同的错误。各种论坛站点上的许多其他示例都处理位于不同服务器上的数据库……并且必须使用开放查询命令。我认为这是没有必要的 当我以拥有更多管理权限的用户的身份运行它时,存储的进程运行得很好。所以我的问题是,我应该设置什么权限来允许LimitedUser执行此操作Stored procedures 存储过程访问同一服务器上的多个数据库失败,stored-procedures,sql-server-2008-r2,cross-database,Stored Procedures,Sql Server 2008 R2,Cross Database,我正在尝试从已被授予所述存储过程执行权限的有限权限登录运行存储过程。存储过程访问同一服务器上的两个数据库。在执行存储过程时,我收到一个错误,该错误表示: 服务器主体“LimitedUser”无法在当前安全上下文下访问数据库“Database2” 一些背景: 我最近的任务是将两个不同的数据库服务器迁移到一个数据库中。我已经备份并导出了必要的数据库,并将它们恢复到新服务器中。较旧的数据库是MS sql server 2000(用于数据库2)和MS sql server 2005(用于数据库1-上述存
谢谢 LimitedUser需要Database2上的权限要执行存储过程在该数据库中执行的任何操作,所有权链接将仅在同一数据库中工作(除非启用服务器选项跨数据库所有权链接,我不建议使用此选项,因为它会将数据库容器分解为安全边界) 例如,您有db1和db2,在db1中有一个存储的过程,它执行db2.dbo.table1中的select* 为此,您需要LimitedUser具备:
- 在db1数据库中为过程执行权限
- 在db2中选择表1上的权限