我希望用户通过视图选择和修改数据,但不授予基表权限。
通过视图选择数据工作正常。
但是当我希望通过视图INSERT
,UPDATE
或DELETE
数据时,SQL Server会说基表上缺少权限。
以下对象:
dbo.test
dbo.vw_test
该表有两列:
Column_1
IDENTITY .... Column_2
int
(可更新列)该视图有以下声明:
SELECT * FROM dbo.test;
我已在此数据库上创建了一个LOGIN和USER,并在此视图上具有SELECT,INSERT,UPDATE和DELETE权限。基表上没有DENY。
如上所述,SELECT有效,但不更新Column_2
。
为什么呢?我是否需要授予基表的所有权限?
我希望不要。我已经在视图上创建了一个INSTEAD OF INSERT
触发器来测试它。但它不起作用。
通过视图修改数据该怎么办?
答案 0 :(得分:1)
我猜你误解了观点。如果要修改视图中的数据,则意味着您将直接访问定义该视图的SQL语句中存在的所有表。这意味着如果要修改数据,将直接对该视图表示的所有表进行修改,这最终意味着您必须提供足够的权限才能执行这些操作。请参阅this链接中的参考(开始之前部分 - >权限)。