我们有 2 个不同的数据库 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 模式的属性,您可以导航到权限,搜索并添加您的 EntityFrameworkUser 角色,然后在下面的权限列表中仅选中 SELECT。
第二:
进入您的 EntityFrameworkUser 角色的属性,您可以导航到 Securables,转到“搜索...”寻找安全对象,将“属于该架构的所有对象”与您的 EntityFramework 架构一起使用。
对于作为结果显示的每个对象,应该只是同义词(除非您还在“EntityFramework”架构中创建了新表/SP),您可以授予对“选择”的访问权限,并保留其他所有内容未选中除非您希望用户对这些对象拥有或多或少的权力。
无论:
这将允许您在没有写/执行权限的情况下查看表。分配需要此只读访问权限的任何服务器用户,并将他们添加到“EntityFrameworkUser”角色。在我的例子中,有一个“WebApplication”和一个“DesktopApplication”用户,它们都被分配给了“EntityFrameworkUser”角色。
这应该可以解决您的可见性问题,同时限制系统内的写入和执行访问权限。
关于c# - 是否可以在 SQL Server 中创建只读同义词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903804/