如何使您的服务器成为选定视图的链接服务器?

Posted

技术标签:

【中文标题】如何使您的服务器成为选定视图的链接服务器?【英文标题】:How to make your Server as Linked Server for selected views? 【发布时间】:2017-10-01 18:48:20 【问题描述】:

我们有一个 SQL Server 2012 实例,它是我们安全系统的数据库。现在我们有一个场景,我们希望允许我们的 SQL Server 的另一个团队选择某些记录,即我们为他们创建了四个视图以满足他们的要求。

但是,我们不想向他们提供或列出我们所有的表,而只允许这四个视图在我们的系统中查看和查询。当我浏览许多文档时,很明显我们可以通过将 SQL Server 作为链接服务器来做到这一点。

通过链接服务器进行此操作的最佳方式是什么?

【问题讨论】:

【参考方案1】:

视图是否在特定模式中? 尝试授予用户对该架构的访问权限,以便他们只能从中读取和查看元数据。

https://docs.microsoft.com/en-us/sql/relational-databases/security/metadata-visibility-configuration

【讨论】:

目前我们只有一个架构,所有视图和表都在同一个架构上 架构是最自然的分段访问方式。 所以我们需要创建一个单独的模式并将视图放在那里。 是的,并确保他们只能访问该架构。那是正确的做法,以便您限制对视图的选择权限。我认为它也会限制元信息,但你会看到。 当然。关于链接服务器部分。这种情况下需要吗【参考方案2】:

我们不想向他们提供或列出我们所有的表格,而只是 允许这四个视图在我们的系统中查看和查询。

您不需要链接服务器来完成此操作。

您只需授予 SELECT 对这 4 个视图的权限。

当您在数据库中创建用户并且不授予它任何权限时,它根本看不到任何用户表/视图。它只能查看和查询您将授予权限的对象

【讨论】:

那么,在什么情况下实现链接服务器? 当您有 2 台服务器并且想要详细说明来自这两台服务器的数据时,会实施链接服务器。即您需要编写查询,例如 select * from server2.RemoteDB.dbo.myRemoteTable join dbo.myLocalTable

以上是关于如何使您的服务器成为选定视图的链接服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DACPAC 部署中仅部署一组选定的存储过程?

如何使Drupal链接相对

Rail片段缓存如何使您的应用受益,即阻止数据库调用?

如何限制对 Access 中某些列的访问

最佳实践:如何跟踪出站链接?

如何在swift中最初打开一个表视图到选定的详细视图