4

是否可以创建具有模拟的视图,类似于"execute as"在存储过程中?

我想在单独的模式中创建一些视图。一些用户应该获取SELECTUPDATE访问这些视图,以便他们能够更改基础表,但没有直接更新表的访问权限。

这有可能吗?

4

1 回答 1

2

不,这是不可能的。EXECUTE AS 主要与 SP 一起使用,但您可以更广泛地使用它们。来自技术网

在 SQL Server 中,您可以定义以下用户定义模块的执行上下文:函数(内联表值函数除外)、过程、队列和触发器。

...

函数(内联表值函数除外)、存储过程和 DML 触发器 { EXEC | 执行}作为{调用者| 自我 | 所有者 | '用户名' }

具有数据库范围的 DDL 触发器 { EXEC | 执行}作为{调用者| 自我 | '用户名' }

具有服务器范围和登录触发器的 DDL 触发器 { EXEC | 执行}作为{调用者| 自我 | '登录名' }

队列 { 执行 | 执行}作为{自我| 所有者 | '用户名' }

但是,您有一些选择:

  • 创建返回数据的 GET-SP 和更新数据的 UPDATE-SP(我为此使用 XML 输入而不是表变量)
  • 使用您的“模拟”用户创建的视图,并使用 DENY/GRANT 来破坏权限继承,例如 GRANT VIEW DEFINITION
于 2013-08-13T08:38:16.537 回答