我有一个场景,我需要允许一个数据库中的用户访问SAME SQL服务器上另一个数据库中的对象。
SQL SERVER SETUP:
我正在运行SQL Server 2008 Express实例。
在该实例中,我有以下内容:
2个数据库:
DATABASE1
DATABASE2
2次登录:
ADMIN1
ADMIN2
DATABASE1在ADMIN1上创建了一个用户( USER1 ),对DATABASE1中的存储过程具有SELECT,UPDATE,DELETE,INSERT和GRANT EXECUTE权限
DATABASE2在ADMIN2上创建了一个用户( USER2 ),并且对DATABASE2中的存储过程具有SELECT,UPDATE,DELETE,INSERT和GRANT EXECUTE权限
问题:
我需要的是允许对DATABASE2中的表和存储过程的'USER1'SELECT / EXECUTE权限
我从几个帖子中尝试了一些SQL的片段,但我不知道如何编写SQL。 我还尝试通过右键单击用户并在Management Studio中登录来手动勾选权限复选框 我需要SQL在我的脚本中执行。
我的问题的原因
我在DATABASE1和DATABASE2中有相关的表,但显然我们不能在不同的数据库中创建外键约束。
我们想到处理2个表之间关系的最好方法是在DATABASE1中创建一个存储过程来查询
DATABASE2中的相关表并返回结果。
抱歉无法发布任何示例,因为我无法通过我的搜索找到任何与我上面描述的场景匹配的示例。 如果我能提供任何进一步的信息,请告诉我。
非常感谢 千电子伏
答案 0 :(得分:0)
只要您的用户在实例级别定义,您就可以在每个数据库中授予他们所需的任何权限。在master下创建用户,然后将它们添加为每个数据库的用户,授予他们每个特定数据库所需的任何权限。
更多细节(根据评论)编辑:
首先,您需要创建数据库登录。这是一个登录,然后可以作为用户添加到您的实例上的一个或多个数据库。
详细信息(包括SQL语法):http://technet.microsoft.com/en-us/library/ms189751.aspx
其次,您需要在数据库中配置用户(Database1,Database2等...)。您希望将这些用户添加到已安装的每个产品数据库中。只要用户在那里,您就可以查询实例上的各种数据库。
此处详细信息(包括SQL):http://technet.microsoft.com/en-us/library/aa337545.aspx
祝你好运!