首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置存储过程以访问另一个数据库中的表

如何配置存储过程以访问另一个数据库中的表
EN

Stack Overflow用户
提问于 2010-10-28 15:17:26
回答 2查看 3.8K关注 0票数 5

我在同一个Server上有两个数据库:

数据库A

  • 表1
  • 表2
  • sproc x

数据库B

  • 表3
  • 表4
  • sproc y
  • sproc z

我希望授予user1对数据库的访问权限,但只能通过对sprocs的执行权限进行访问。

  • sproc在表1和表2之间连接,user1可以执行。
  • sproc在表3和表4之间连接,user1可以执行。
  • sproc在表1和表4之间连接,user1无法执行,除非我将SELECT权限授予表1。为什么?

我不想授予select权限,因为这破坏了“只通过sprocs访问数据库”的安全模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-28 15:34:36

您可能需要为这两个数据库启用跨数据库所有权链

要查看是否启用了它:

代码语言:javascript
复制
select name, is_db_chaining_on
    from sys.databases

若要启用设置,请执行以下操作:

代码语言:javascript
复制
EXEC sp_dboption 'DatabaseA', 'db_chaining', 'true';
GO

EXEC sp_dboption 'DatabaseB', 'db_chaining', 'true';
GO
票数 3
EN

Stack Overflow用户

发布于 2013-09-17 16:45:22

我确实遇到了这个问题,但在我的例子中,解决方案是更新这两个数据库,使其具有相同的所有者。

如果数据库由同一个所有者拥有,则不需要显式打开所有权链接(因为所有者是同一个所有者)。

关于这方面的伟大文章: http://www.sommarskog.se/grantperm.html

对于最近的版本,您可以使用sp_changedbowner或"ALTER授权“语句更新数据库的所有权。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4044295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档