在Azure Data Factory中执行SQL遇对象已存在错误,求原因
错误原因及解决方案
错误核心原因
你在Foreach循环的Lookup活动里重复执行了create table dbo.sqldb12语句:
- 第一次循环时,表
sqldb12会被正常创建; - 后续循环再执行这条创建语句时,SQL Server会因为目标表已经存在,抛出“数据库中已存在名为sqldb的对象”的错误(注:报错里的
sqldb应为拼写简化,实际指向你创建的sqldb12)。
另外你的SQL语句存在语法错误:create table语句末尾多了一个逗号,这也会导致执行异常。
修正方案
- 分离表创建逻辑:把创建表的操作移到Foreach循环之前,用
IF NOT EXISTS判断表是否存在,避免重复创建,SQL语句调整为:
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'sqldb12' AND schema_id = SCHEMA_ID('dbo')) CREATE TABLE dbo.sqldb12(name char(20), count int)
- Foreach内仅保留插入逻辑:在Foreach的Lookup活动里只执行插入操作(如果需要返回结果可保留select),修正后的SQL:
INSERT INTO sqldb12 VALUES ('@{item().name}', @{int(activity('Filter1').output.ItemsCount)}) SELECT * FROM sqldb12
内容的提问来源于stack exchange,提问作者Anubhav sharma
相关产品推荐
相关产品推荐

