You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术求助:如何为SQL Server所有函数授予ALTER权限

为SQL Server所有函数授予ALTER权限的正确方法

你提供的代码GRANT ALTER ON FUNCTION::dbo TO [username]存在语法错误,FUNCTION::后需指定具体函数名,无法直接通过架构名批量授予函数权限。以下是两种可行方案:

方案1:授予指定架构下所有对象的ALTER权限(含函数)

如果允许用户修改该架构下的所有对象(表、视图、函数等),可直接对架构授权:

GRANT ALTER ON SCHEMA::dbo TO [username];

方案2:仅授予所有函数的ALTER权限

若需严格仅针对函数授权,需通过动态SQL批量生成授权语句(覆盖所有函数类型):

DECLARE @SQL NVARCHAR(MAX) = N'';

SELECT @SQL += N'GRANT ALTER ON OBJECT::' + QUOTENAME(s.name) + N'.' + QUOTENAME(o.name) + N' TO [username];' + CHAR(10)
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE o.type IN ('FN', 'IF', 'TF', 'FS', 'FT'); -- 包含标量、内联表值、多语句表值、CLR标量、CLR表值函数

EXEC sp_executesql @SQL;

可选调整

如果只需针对特定架构(如dbo)下的函数,在WHERE子句中追加条件:

AND s.name = 'dbo'

内容的提问来源于stack exchange,提问作者Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:22:07