是否可以通过模拟创建视图,类似于"execute as"
在存储过程中?
我想在单独的模式中创建一些视图。一些用户应该得到SELECT
and UPDATE
访问这些视图,以便它们能够更改基础表,但无需直接更新表。
有观点可能吗?
不,这是不可能的。 EXECUTE AS 主要与 SP 一起使用,但您可以更广泛地使用它们。来自科技网 http://technet.microsoft.com/en-us/library/ms188354%28v=sql.110%29.aspx:
在 SQL Server 中,您可以定义以下的执行上下文
用户定义的模块:函数(内联表值除外)
函数)、过程、队列和触发器。
...
函数(内联表值函数除外)、存储过程、
和 DML 触发器 { EXEC |执行 } AS { 调用者 |自我|业主|
'用户名' }
具有数据库范围的 DDL 触发器 { EXEC |执行 } AS { 调用者 |自己
| '用户名' }
具有服务器范围的 DDL 触发器和登录触发器 { EXEC |执行 }
作为 { 呼叫者 |自我| '登录名' }
队列 { 执行 |执行 } AS { 自我 |业主| '用户名' }
但是,您在这里有一些选择:
- 创建返回数据的 GET-SP 和更新数据的 UPDATE-SP(我使用 XML 输入而不是表变量)
- 使用由“模拟”用户创建的视图,并使用 DENY/GRANT 破坏权限继承,例如 GRANT VIEW DEFINITION
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)