是否可以在SQL Server中创建只读同义词?

时间:2014-02-20 09:40:31

标签: c# sql sql-server entity-framework synonym

我们有两个不同的数据库DB1和DB2,其中DB2中的表引用了DB1中的表。

我们正在研究在DB2中使用具有只读访问权限的SYNONYMS的可能性,并使用EntityFramework将这些SYNONYMS称为DB2中的表。

由于目前EF不跨越多个数据库,在阅读本文(http://rachel53461.wordpress.com/2011/05/22/tricking-ef-to-span-multiple-databases/)后,我们领先一步,但是,我们希望只对新创建的SYNONYMS具有只读权限。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以为同义词创建架构(例如“EntityFramework”或“EF”)。为您的架构创建一个角色,将其命名为“EntityFrameworkUser”。

现在有两条路径,在这里 - 如果您只有SELECT访问权限,则第一条路径;如果您可能还需要EXECUTE访问权限,则第二条路径。

FIRST:

进入EntityFramework架构的属性,您可以导航到Permissions,搜索并添加您的EntityFrameworkUser角色,并在下面的权限列表中仅检查SELECT。

第二

进入EntityFrameworkUser角色的属性,您可以导航到Securables,转到“搜索...”获取安全性,使用您的EntityFramework模式使用“属于模式的所有对象”。

对于显示为结果的每个对象,它们应该只是同义词(除非您还在“EntityFramework”模式中创建了新的表/ SP),您可以授予对“选择”的访问权限,并保留其他所有未选中状态除非您希望用户对这些对象拥有更多或更少的权力。

REGARDLESS:

这将允许您在没有写入/执行访问权限的情况下查看表。分配任何服务器用户需要此只读访问权限,并将其添加到“EntityFrameworkUser”角色。就我而言,有一个“WebApplication”和一个“DesktopApplication”用户,这两个用户都被分配到“EntityFrameworkUser”角色。

这应解决您的可见性问题,同时限制系统内的写入和执行访问。