在我们的数据库中,所有表都链接回一个表。这个表有一个位列来限制记录是否显示。目前,记录在网站的代码端进行过滤。
有什么方法可以设置权限,以便用户A 永远不会在数据库中看到该公共位列设置为 true 的任何记录?
我们使用的是 SQL Server 2008。
或者,如果您有任何想法如何在那里实现它,我们也在 .net 4(在 c# 中)中使用实体框架 4.0?
感谢您的反馈意见。
在我们的数据库中,所有表都链接回一个表。这个表有一个位列来限制记录是否显示。目前,记录在网站的代码端进行过滤。
有什么方法可以设置权限,以便用户A 永远不会在数据库中看到该公共位列设置为 true 的任何记录?
我们使用的是 SQL Server 2008。
或者,如果您有任何想法如何在那里实现它,我们也在 .net 4(在 c# 中)中使用实体框架 4.0?
感谢您的反馈意见。
根据这篇优秀的 TechNet 文章,如果您相应地构建数据库,使用视图或存储过程来限制当前用户的结果,那么 SQL 服务器确实可以实现行级安全性。据我所知,SQL Server 没有内置的行级锁定功能。
您可以在表格顶部定义一个视图,该视图仅显示“活动”列设置为 1(真)的那些行。
然后,您可以从该组用户撤消SELECT
对基础表的权限,但反过来授予他们SELECT
对您创建的新视图的权限。