我正在尝试对我的数据模型实施行级安全权限。因为我使用的是 SQL Server 2012,所以我必须使用视图和与视图连接的用户名来执行此操作。(这不是重点,但对于那些有兴趣的人,我粘贴了帮助我获得预期效果的链接 http://www.sqlservercentral.com/articles/Stairway+Series/128866/)。
我决定使用模式权限来限制访问。一切正常,但不是一个方案。我的观点包括对我限制的几个方案中的表的选择。但是,即使我禁用了对存在问题的架构的访问(假设它是“CDN”方案),我也无法从我的视图中引用 CDN 方案中的表。我发现这是架构类型“数据库角色”,所有者是 CDN。如果我将 CDN 方案的所有者更改为“用户”类型的“dbo”,我可以在我的视图中访问该模式。
我不知道这些类型之间的区别,但我不想更改 CDN 的所有者。有人可以给我任何线索来解决这个问题吗?提前致谢。M。
我发现当在常规选项卡中的角色> CDN 的数据库角色中,我从我的视图中添加架构时,我可以执行我的视图。但是不知道这个改动是否安全?
我可能没有正确定义问题。我将重新定义它:
我的目标是限制对数据库中所有表和视图等的访问,“Qlik”模式中的除外。
我的视图(在 Qlik 架构中)连接到不同的架构,即 CDN、TBC、dbo(Qlik.MyCostumersView - 示例视图):
SELECT a.CustId, a.Name, a.City, a.CreditLimit, a.SocialSecurityNumber, a.FelonyConvictions, a.UserAccess FROM CDN.Customer a, TBC.Struktura b, dbo.MPKDzial
在任何情况下我都无法达到我的目标。
我发现我可以管理具有相同所有者的模式之间的访问。但是 CDN 将 CDN 作为所有者。当我在其他架构中将所有权更改为 CDN 时,它工作正常,不幸的是,除了 dbo 架构(dbo 所有者)。