Azure Synapse数据仓库执行多批SQL遇Msg103010错误,求解决方案
解决Azure Synapse数据仓库创建Schema的语法错误问题
问题原因
Azure Synapse SQL池的T-SQL语法与标准SQL Server存在差异,当IF NOT EXISTS条件后直接跟CREATE SCHEMA这类DDL语句时,必须显式用BEGIN/END包裹语句块,否则会触发解析错误。
解决方案1:用BEGIN/END包裹DDL语句
修改后的脚本符合Synapse语法要求,无需创建存储过程:
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'SCHEMA1') BEGIN CREATE SCHEMA [SCHEMA1]; END GO IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'SCHEMA2') BEGIN CREATE SCHEMA [SCHEMA2]; END GO
解决方案2:使用动态SQL执行
通过动态SQL运行时解析DDL语句,可绕过解析器限制:
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'SCHEMA1') BEGIN EXEC('CREATE SCHEMA [SCHEMA1];') END GO IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'SCHEMA2') BEGIN EXEC('CREATE SCHEMA [SCHEMA2];') END GO
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

