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

Azure Synapse无服务器SQL池报错:DISTRIBUTION附近语法不正确

Azure Synapse无服务器SQL池语法错误分析与解决

错误根源

  • 无服务器SQL池不支持DISTRIBUTION配置:DISTRIBUTION = ROUND_ROBIN是**专用SQL池(原SQL数据仓库)**的特有语法,无服务器SQL池基于计算存储分离架构,不需要也不允许指定表分布策略,这是触发"Incorrect syntax near 'DISTRIBUTION'"的直接原因。
  • 代码还存在其他语法问题:
    • 创建外部表需使用CREATE EXTERNAL TABLE,而非普通的CREATE TABLE
    • CREATE TABLE语句中WITH块后不能直接跟AS SELECT,需调整为符合外部表创建逻辑的结构

修正后的动态SQL示例

SELECT CM.EntityName,
    --Before the first column of each table, construct a DROP TABLE statement if already exist
    CASE WHEN CM.OrdinalPosition = 1
        THEN 
        'DROP EXTERNAL TABLE IF EXISTS ' + QUOTENAME(@EnrichedViewSchema) + '.' + QUOTENAME(CM.EntityName) + '
        CREATE EXTERNAL TABLE ' + QUOTENAME(@EnrichedViewSchema) + '.' + QUOTENAME(CM.EntityName) + '
        WITH
        (
            LOCATION = ''your-storage-path'', -- 必须指定外部存储路径
            DATA_SOURCE = YourExternalDataSource, -- 已预先定义的外部数据源
            FILE_FORMAT = YourFileFormat -- 已预先定义的文件格式
        )
        AS
        SELECT DISTINCT '
        ELSE '  ,'
        END

关键注意事项

  • 无服务器SQL池中的外部表必须指定LOCATION、DATA_SOURCE、FILE_FORMAT三个必填参数
  • 严格区分专用池与无服务器池的语法差异,不要混用两类池的表创建逻辑
  • 动态SQL拼接对象名时,务必用QUOTENAME()包裹所有标识符,避免语法错误与SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:35:27