我们有两个不同的数据库DB1和DB2,其中DB2中的表引用了DB1中的表。
我们正在研究在DB2中使用具有只读访问权限的SYNONYMS的可能性,并使用EntityFramework将这些SYNONYMS称为DB2中的表。
由于当前EF并不跨多个数据库,因此在阅读本文(http://rachel53461.wordpress.com/2011/05/22/tricking-ef-to-span-multiple-databases/)之后,我们迈出了一步,但是,我们只希望对新创建的SYNONYMS具有只读访问权限。
任何帮助是极大的赞赏!
最佳答案
您可以为您的同义词创建一个架构(为简单起见,例如“ EntityFramework”或“ EF”)。为您的架构创建一个角色,将其命名为“ EntityFrameworkUser”。
现在有两条路径,这里是第一个(如果您只具有SELECT访问权限),第二个(如果您还需要EXECUTE访问)。
第一:
进入EntityFramework架构的属性,您可以导航到Permissions,搜索并添加EntityFrameworkUser角色,并在下面的权限列表中仅选中SELECT。
第二:
进入EntityFrameworkUser角色的属性,您可以导航到Securables,转到“ Search ...”以获取安全性,并在EntityFramework模式中使用“属于该模式的所有对象”。
对于结果显示的每个对象,它们应该只是同义词(除非您还在“ EntityFramework”架构中创建了新的表/ SP),您可以授予对“选择”的访问权限,并保留其他所有选项,除非您希望用户对这些对象拥有更多或更少的权力。
而不管:
这将使您无需写入/执行访问即可查看表。分配需要此只读访问权限的任何服务器用户,然后将其添加到“ EntityFrameworkUser”角色。在我的情况下,有一个“ WebApplication”和“ DesktopApplication”用户,这两个用户都被分配了“ EntityFrameworkUser”角色。
这将解决您的可见性问题,同时限制系统内的写入和执行访问。