Sql server 授予使用其他数据库表的视图的权限

Sql server 授予使用其他数据库表的视图的权限,sql-server,Sql Server,我知道这个问题被重复了(),但我已经尝试了建议的解决方案,没有任何运气 我的想法是通过创建视图的中间数据库授予对某些数据库中数据的有限访问权。我这样做是为了避免每次创建视图时对外部表授予特定权限。我就是这么做的: 我有用户A和用户B 用户_A创建数据库_A1和数据库_A2 用户_A在数据库_A1中创建视图_A,该视图从数据库_A2读取数据 我在数据库_A1中将db_dataread角色设置为User_B,这样他们现在就可以执行VIEW_A了 如果用户_B尝试执行视图_A,则会收到消息“服务器主

我知道这个问题被重复了(),但我已经尝试了建议的解决方案,没有任何运气

我的想法是通过创建视图的中间数据库授予对某些数据库中数据的有限访问权。我这样做是为了避免每次创建视图时对外部表授予特定权限。我就是这么做的:

  • 我有用户A和用户B
  • 用户_A创建数据库_A1和数据库_A2
  • 用户_A在数据库_A1中创建视图_A,该视图从数据库_A2读取数据
  • 我在数据库_A1中将db_dataread角色设置为User_B,这样他们现在就可以执行VIEW_A了
  • 如果用户_B尝试执行视图_A,则会收到消息“服务器主体‘用户_B’无法在当前安全上下文下访问数据库‘数据库_A2’”,这是我预期的,因为用户对此数据库没有权限
  • 然后,我使用以下命令在两个数据库中激活“跨数据库所有权链接”(不确定是否只需要在一个数据库中执行此操作):
  • 我通过运行以下命令检查链接是否处于活动状态:
  • 由于两个数据库上的“is_db_chaining_on”值都设置为“1”,因此看起来一切正常
  • 我重试执行视图。。。但继续拒绝访问,同样的错误
我做错什么了吗?。我想我已经遵循了下列指示:


您需要在其他数据库中创建用户(不授予任何权限)


您需要在其他数据库中创建用户(不授予任何权限)


对于dbo拥有的对象,数据库所有者必须相同,才能保持完整的所有权链。确保数据库拥有相同的所有者,并使用
ALTER AUTHORIZATION ON DATABASE::YourDatabase TO YourDbOwner以进行修正。对于其他模式中的对象,每个数据库中的模式所有者需要映射到同一登录名


用户在访问的每个数据库中还需要一个帐户(除非启用了来宾用户)。但是,不需要对间接引用的对象授予任何权限。

对于dbo拥有的对象,数据库所有者需要相同,才能保持完整的所有权链。确保数据库拥有相同的所有者,并使用
ALTER AUTHORIZATION ON DATABASE::YourDatabase TO YourDbOwner以进行修正。对于其他模式中的对象,每个数据库中的模式所有者需要映射到同一登录名


用户在访问的每个数据库中还需要一个帐户(除非启用了来宾用户)。但是,不需要对间接引用的对象授予任何权限。

对于dbo拥有的对象,数据库所有者需要与未断链的对象相同。确保数据库拥有相同的所有者,并使用'ALTER AUTHORITION ON DATABASE::YourDatabase TO YourDbOwner;'要修正dbo拥有的对象,数据库所有者必须与未断链相同。确保数据库拥有相同的所有者,并使用'ALTER AUTHORITION ON DATABASE::YourDatabase TO YourDbOwner;'为了补救,谢谢!我只需要在数据库中创建用户。谢谢!我只需要在数据库_A2中创建用户_B。就是这样!谢谢就这样!谢谢
ALTER DATABASE Database_A1 SET DB_CHAINING ON;  
ALTER DATABASE Database_A2 SET DB_CHAINING ON;
SELECT is_db_chaining_on, name FROM sys.databases;
USE [DATABASE_A2]
GO
CREATE USER [User_B] FOR LOGIN [User_B]
GO