SQL Server 2005 - 通过视图修改数据

时间:2013-11-28 17:48:15

标签: sql sql-server permissions views

我希望用户通过视图选择和修改数据,但不授予基表权限。

通过视图选择数据工作正常。

但是当我希望通过视图INSERTUPDATEDELETE数据时,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触发器来测试它。但它不起作用。

通过视图修改数据该怎么办?

1 个答案:

答案 0 :(得分:1)

我猜你误解了观点。如果要修改视图中的数据,则意味着您将直接访问定义该视图的SQL语句中存在的所有表。这意味着如果要修改数据,将直接对该视图表示的所有表进行修改,这最终意味着您必须提供足够的权限才能执行这些操作。请参阅this链接中的参考(开始之前部分 - >权限)。