能否以指定用户身份执行inline-table valued function?附代码示例
内联表值函数(inline-table valued function)指定执行身份方法
首先明确结论:可以指定特定用户身份执行内联表值函数,SQL Server原生支持通过WITH EXECUTE AS子句配置函数的执行上下文。
支持的执行身份选项
EXECUTE AS CALLER:默认配置,以调用函数的用户身份执行,权限校验完全以调用方权限为准EXECUTE AS OWNER:以该函数的所有者身份执行EXECUTE AS '指定用户名':以你明确指定的某个数据库用户身份执行,创建函数的用户需要持有对该用户的模拟权限EXECUTE AS SELF:以创建/最近一次修改该函数的用户身份执行
写法示例
CREATE FUNCTION fun() WITH EXECUTE AS OWNER RETURNS TABLE AS RETURN ( -- 此处填写你的查询逻辑 SELECT col1, col2 FROM 你的业务表 )
注意:内联表值函数的执行上下文配置仅作用于函数内部的权限校验,不会更改调用方在函数外的权限上下文。如果配置为指定自定义用户,需确保创建函数的账号拥有对该用户的
IMPERSONATE权限,否则函数会创建失败。
内容的提问来源于stack exchange,提问作者Dana
相关产品推荐
相关产品推荐

