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

在Azure Synapse Studio中无法创建用户自定义函数问题求助

报错原因说明

语法错误「Create Function is Incorrect token」

该语法提示错误由两类原因导致:

  • Synapse 不同类型的SQL池对函数的支持范围不同:无服务器SQL池仅支持内联表值函数,不支持标量函数、多语句表值函数,如果你编写的是后者就会触发语法报错;部分旧版本Synapse Studio的静态语法校验规则和Synapse SQL实际支持的语法存在偏差,也会出现误报的情况。
  • 编辑器选择的数据库上下文存在缓存问题,即使顶部选择了自定义数据库,实际查询上下文可能仍未切换到对应库。

权限报错「Create Function permission denied in database」

当前操作使用的账号缺少对应数据库的CREATE FUNCTION权限,如果创建的是绑定到架构的函数,还需要对应Schema的ALTER权限。
创建函数报错截图

正确创建函数操作步骤

步骤1:确认SQL池类型,编写对应语法的函数

无服务器SQL池(仅支持内联表值函数)

-- 先手动切换到目标数据库,不要依赖编辑器顶部选择
USE 你的自定义数据库名称;
GO
CREATE FUNCTION dbo.自定义函数名 (@参数名 参数类型)
RETURNS TABLE
AS
RETURN
(
    -- 这里填写你的查询逻辑
    SELECT 列名 FROM 表名 WHERE 筛选条件 = @参数名
);
GO

专用SQL池(支持标量函数、内联表值函数)

标量函数示例:

USE 你的自定义数据库名称;
GO
CREATE FUNCTION dbo.自定义函数名 (@参数名 参数类型)
RETURNS 返回值类型
AS
BEGIN
    -- 这里填写计算逻辑
    RETURN 计算结果;
END;
GO

步骤2:配置对应权限

使用数据库管理员账号执行以下授权语句,给操作账号开通对应权限:

USE 你的自定义数据库名称;
GO
-- 授予创建函数权限
GRANT CREATE FUNCTION TO [你的操作账号];
-- 授予对应Schema的修改权限,用于绑定架构的函数创建
GRANT ALTER ON SCHEMA::dbo TO [你的操作账号];
GO

补充注意事项

如果编辑器仍提示语法错误,可以忽略静态校验直接执行语句,Synapse Studio的前端校验规则经常滞后于后端实际支持的语法规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:00:01