2个数据库中的SQL用户权限

2个数据库中的SQL用户权限,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个场景,需要允许一个数据库中的用户访问同一SQL server上另一个数据库中的对象 SQL SERVER安装程序: 我有一个SQL Server 2008 Express实例正在运行 在这种情况下,我有以下几点: 2个数据库: 数据库1 数据库2 2次登录: ADMIN1 管理员2 DATABASE1在ADMIN1上创建了一个用户(USER1),并对DATABASE1中的存储过程具有选择、更新、删除、插入和授予执行权限 DATABASE2在ADMIN2上创建了一个用户(USER2),并对

我有一个场景,需要允许一个数据库中的用户访问同一SQL server上另一个数据库中的对象

SQL SERVER安装程序:
我有一个SQL Server 2008 Express实例正在运行

在这种情况下,我有以下几点:

2个数据库:
数据库1
数据库2

2次登录:
ADMIN1
管理员2

DATABASE1在ADMIN1上创建了一个用户(USER1),并对DATABASE1中的存储过程具有选择、更新、删除、插入和授予执行权限

DATABASE2在ADMIN2上创建了一个用户(USER2),并对DATABASE2中的存储过程具有选择、更新、删除、插入和授予执行权限

问题:
我需要的是允许对数据库2中的表和存储过程具有“USER1”SELECT/EXECUTE权限

我试过几篇文章中的一些SQL片段,但我不知道如何编写SQL。 我还尝试通过右键单击用户并在ManagementStudio中登录来手动勾选权限复选框,但是 我需要SQL在脚本中执行

我的问题的原因
我在DATABASE1和DATABASE2中有相关的表,但显然我们不能跨不同的数据库创建外键约束。 我们认为处理这两个表之间关系的最佳方法是在DATABASE1中创建一个存储过程来查询 数据库2中的相关表,并返回结果

很抱歉,我无法发布任何示例,因为我无法通过搜索找到任何与上述场景匹配的示例。 如果我能提供任何进一步的信息,请让我知道

非常感谢
Kev

只要您的用户是在实例级别定义的,您就可以授予他们在每个数据库中所需的任何权限。在主数据库下创建您的用户,然后将其添加为每个数据库的用户,并授予他们特定数据库所需的任何权限

更详细地编辑(基于评论):

首先,您需要创建一个数据库登录。这是一个登录名,可以作为用户添加到实例上的一个或多个数据库中

此处的详细信息(包括SQL语法):

其次,您需要在数据库中设置用户(Database1、Database2等)。您需要将这些用户以相同的方式添加到每个已安装的产品数据库中。只要用户在那里,就可以跨实例上的各种数据库进行查询

此处的详细信息(包括SQL):


祝你好运

谢谢你对MystikSpiral的快速回复。问题是,DATABASE1是先创建的,DATABASE2是为不同的产品创建的,只有在购买了产品2后才会创建。DATABASE1已经位于多个客户服务器上,因此已经创建了用户。如果用户已经被分配到数据库,有没有一种方法可以让我在他们当前存在的地方编辑他们的权限?不必在master db下重新创建用户?您没有提到数据库的存在是可变的,这会极大地改变情况。您是否可以控制每个数据库的设置?如果您这样做了,请在部署数据库之前为它们配置正确的权限。实际上,将来可能会创建数据库3和数据库4。ie:并不是所有的数据库都是同时创建的,因此它们之间并不相互了解。因此,我需要DATABASE1中的USER1能够在某种意义上“适应”,以便能够读取将来出现的任何其他数据库。问题是,USER1存在于数据库1中。希望这能提供更多的见解。感谢您需要在单一数据库之上创建一个用户,该数据库可以跨越您可能拥有或不拥有的所有这些实体。在你把它准备好之前,你不可能让它工作。我可能在翻译中遗漏了一些东西,但根据您共享的内容,这就是它的表现。谢谢mystik-您能否提供一个解决方案,将它们放在哪个系统数据库下(如果有的话)?我不知道。如何实施.my问题的解决方案so.I.确实需要帮助理解我如何根据我的示例允许需求。如果你能给我一个任何sql要求的例子,我会测试itv,并标记你的答案为接受。非常感谢。。Kev只是另一个想法……我在“跨越数据库”时看到的。想法1。在数据库1中创建引用数据库2的视图。我会把它放在一个新定义的模式名下。所以…查询数据库1(要查看数据库2中的数据),您必须“从OtherDatabasesSchema.vwCounty.Idea2中选择A、B、C,在db1中的代码中使用同义词,并且同义词可以指向数据库2中的对象。