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

Azure Synapse专用SQL池执行SQL脚本时出现语法错误

Azure Synapse专用池创建RLS_LOGS表报错的解决方法

你的SQL脚本存在两个关键问题,导致在Synapse专用池中执行失败:

  • 错误使用了CTAS(CREATE TABLE AS SELECT)语法:CTAS要求AS后面必须跟有效的SELECT查询语句,而非直接定义列结构
  • Synapse专用池的CTAS不支持在列定义中直接指定DEFAULT约束

修正方案一:使用常规CREATE TABLE语法(推荐,适合创建空表)

直接用标准建表语句定义结构和约束,不需要依赖CTAS:

SET ANSI_NULLS ON 
GO
SET QUOTED_IDENTIFIER ON 
GO

CREATE TABLE [dbo].[RLS_LOGS] (
    [USER_IDENTITY] [nvarchar](4000) NOT NULL,
    [DESCRIPTION] [nvarchar](4000) NOT NULL,
    [CREATED_ON] [datetime2](7) NOT NULL DEFAULT (GETDATE())
)
WITH (
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

修正方案二:先通过CTAS创建表,再添加DEFAULT约束

如果必须用CTAS(比如基于现有数据创建表),可以分两步操作:

  1. 用CTAS创建空表或带初始数据的表:
SET ANSI_NULLS ON 
GO
SET QUOTED_IDENTIFIER ON 
GO

CREATE TABLE [dbo].[RLS_LOGS] 
WITH (
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
)
AS
-- 生成空表,若有数据源可替换为实际查询
SELECT 
    CAST('' AS nvarchar(4000)) AS [USER_IDENTITY],
    CAST('' AS nvarchar(4000)) AS [DESCRIPTION],
    CAST(GETDATE() AS datetime2(7)) AS [CREATED_ON]
WHERE 1 = 0;
  1. 为CREATED_ON列添加DEFAULT约束:
ALTER TABLE [dbo].[RLS_LOGS]
ADD DEFAULT (GETDATE()) FOR [CREATED_ON];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:21:50