Sql 使用视图验证不正确的登录id或身份不明的用户
我在msdn上读到: 视图允许不同的用户以不同的方式查看数据,即使他们使用相同的视图 同时提供数据。当具有许多不同兴趣和技能级别的用户共享同一数据库时,这一点尤其有用 例如,可以创建一个视图,仅检索与客户经理交易的客户的数据。该视图可以根据使用该视图的帐户经理的登录ID来确定要检索的数据 我的问题:Sql 使用视图验证不正确的登录id或身份不明的用户,sql,sql-server,sql-server-2005,permissions,view,Sql,Sql Server,Sql Server 2005,Permissions,View,我在msdn上读到: 视图允许不同的用户以不同的方式查看数据,即使他们使用相同的视图 同时提供数据。当具有许多不同兴趣和技能级别的用户共享同一数据库时,这一点尤其有用 例如,可以创建一个视图,仅检索与客户经理交易的客户的数据。该视图可以根据使用该视图的帐户经理的登录ID来确定要检索的数据 我的问题: 对于上面的示例,我必须在创建视图的表上有一个名为Userid/LoginId的列,以便在视图中为该列应用一个check选项。然后,如果一个名称不在该列中的用户试图输入数据,则他/她将被阻止。是的,您
对于上面的示例,我必须在创建视图的表上有一个名为Userid/LoginId的列,以便在视图中为该列应用一个check选项。然后,如果一个名称不在该列中的用户试图输入数据,则他/她将被阻止。是的,您是对的。你应该
- 添加一列,其中包含用户的登录名或数据库用户名(比如您称之为用户名)
- 每一行都应该有用户名,并填入允许查看该行的人员的登录名或数据库名
- 然后,您可以在where子句中使用内置函数
(用于登录)或SUSER\u SNAME()
(用于数据库名称)构建一个视图,以仅过滤允许用户查看的行USER\u NAME
客户经理
是公司
的一个属性吗?否,因此,account\u manager
不应是公司
表中的列(属性)
客户经理
与公司
之间是否存在直接关系?不,因此,此处不存在关系表(因为关系是间接的)
相反,直接关系是在
客户经理
和客户
之间,以及客户
和公司
之间。应该有两个表,其唯一目的是为这些关系建模。@paolo:我必须事先添加合法用户,是吗?@sqlchild是的,在使用它之前,您必须在数据库中写入合法用户。@paolo:我必须将合法用户添加到表中的列中。@sqlchild:每行可以看到多少用户?如果只有一个用户可以查看每一行,则可以在同一表的列中添加该用户的用户名。但是您有多个用户可以看到每一行,您应该将其设置为一对多关系。@paolo:一行可以被多个用户看到。如何实现一对多关系。你能帮我查一下密码吗