Sql server 特定数据库表寄存器权限

Sql server 特定数据库表寄存器权限,sql-server,permissions,Sql Server,Permissions,我将用Begging的一个例子来解释这一点: 我有一个“database.dbo.table1”表,其中包含以下数据: **userID | amount | Units** 1 | 300 | 2 2 | 150 | 2 3 | 120 | 1 1 | 80 | 16 3 | 130 | 8 我在数据库中为存在的每个用户ID创建了1个用户: user_1 user_2 user_3 这正是我想要的。我想知道

我将用Begging的一个例子来解释这一点:

我有一个“database.dbo.table1”表,其中包含以下数据:

**userID | amount | Units** 
1      | 300    | 2
2      | 150    | 2
3      | 120    | 1
1      | 80     | 16
3      | 130    | 8
我在数据库中为存在的每个用户ID创建了1个用户:

user_1
user_2
user_3
这正是我想要的。我想知道,如果用户1想要从database.dbo.table1中选择*select,那么用户只需要看到以下内容:

**userID | amount | Units** 
1      | 300    | 2
1      | 80     | 16
没有看到来自其他用户的数据

?我可以使用数据库授予的权限来执行此操作吗?设置一个条件,例如如果是执行选择的用户_1,则在userID='1'时只给他数据

或许

?每次用户想要在后台进行选择和更改时,我都可以使用触发器执行此操作

这是我第一次必须根据登录的用户从寄存器上的表depending中分离信息


请帮助并非常感谢您

实现这一点的最简单方法可能是创建如下视图

CREATE VIEW `database.dbo.table1_user1` AS SELECT * 
FROM `database.dbo.table1`
WHERE **userID = 1;
对于每个用户。您还具有更改权限,因此用户只能访问此视图

如果用户不直接访问数据库,则可以通过编程方式解决此问题

更新

还可以为所有用户创建一个视图,并使用当前的用户函数mysql 然后CREATE语句将如下所示

CREATE VIEW `database.dbo.table1_view` AS SELECT * 
FROM `database.dbo.table1`
WHERE **userID = SUBSTRING(CURRENT_USER(), 6, 1);

感谢jarlh注意到这种可能性

除了使用视图之外,SQL Server还支持使用视图,这是一种很好的方法,它可以根据用户筛选行,而无需引入视图。

这是什么RDBMS?RDBMS是Microsoft SQL Server MSM?在当前用户条件下,为什么不是所有用户的一个通用视图?我同意,这也是一个有效的解决方案,我将把它添加到答案中@jarlh如何将当前用户ass条件放入句子中?加入一个单独的表,存储所有用户及其用户ID。