目标是允许所有有权访问Faculty表的“教师”仅对他们自己的社会安全号码选择权限,而不是每个人都有。你们中的任何人都知道我怎么能这样做吗?我确实将我的所有用户设置为Windows用户,并且我有一个名为Teachers的Windows组,如果有帮助的话。
答案 0 :(得分:0)
不可能使用SQL Server中的标准权限(我知道)
您需要在代码中实现这种约束。
理论上你可以传入SS#并根据它进行查询,如果它们不匹配就会引发错误。
答案 1 :(得分:0)
社会安全号码应加密,以便他们在调用记录时无法看到对方的号码。您可以使用解密proc来允许它们解密,根据配置文件ID检查用户ID,并且只有在匹配时才会解密。
答案 2 :(得分:0)
实现行级权限 行级权限用于将信息存储在单个表中的应用程序。每行都有一列定义区分参数,例如用户名,标签或其他标识符。然后,您创建参数化存储过程,传入适当的值。用户只能看到与提供的值匹配的行。 以下步骤描述了如何根据用户或登录名配置行级权限。 创建表,添加一个额外的列来存储名称。 创建一个具有基于用户名列的WHERE子句的视图。这将限制返回到具有指定值的行。使用其中一个内置函数指定数据库用户或登录名。这消除了为不同用户创建不同视图的需要。 '返回用户的登录标识名称。 用户名= SUSER_SNAME()
' USER_NAME or CURRENT_USER Return the database user name.
WHERE UserName = CURRENT_USER()
创建存储过程以根据视图而不是基表选择,插入,更新和删除数据。该视图提供了一个过滤器,用于限制返回或修改的行。 对于插入数据的存储过程,使用视图的WHERE子句中指定的相同函数捕获用户名,并将该值插入UserName列。 拒绝表和对公共角色的视图的所有权限。用户将无法从其他数据库角色继承权限,因为WHERE子句基于用户名或登录名,而不是基于角色。 将存储过程的EXECUTE授予数据库角色。用户只能通过提供的存储过程访问数据。