SQL Server 继续从 Select 语句执行一系列插入操作,尽管出现错误 (?)



我有一个大 SQL 语句文件,排列如下:

INSERT INTO [table here]
SELECT [columns]
FROM OPENROWSET(xlsx tab 1)
INSERT INTO [table here]
SELECT [columns]
FROM OPENROWSET(xlsx tab 2)
... etc etc...

问题是有时 XLSX 选项卡 #2(或 22)不存在,可能会导致错误并且整个语句系列失败。

有没有办法让每个语句像自己的查询一样执行,或者忽略错误并继续?

谢谢!

SQLServer 中的错误处理很棘手。有一些错误会中止整个批处理,有些错误会中止整个会话,无法捕获中止会话且无法从 SSMS 本身重试的错误

在您的情况下,如果您想要一个插入,不受另一个插入的影响。尝试使用批处理分离器GO将它们分开

INSERT INTO 
SELECT 
GO
INSERT
SELECT
GO

参考和进一步阅读:
SQL Server 中的错误和事务处理

认为你想要一些类似的东西。

begin try
INSERT INTO [table here]
SELECT [columns]
FROM OPENROWSET(xlsx tab 1)
end try
begin catch
select 'Tab1 errored'
end catch
begin try
INSERT INTO [table here]
SELECT [columns]
FROM OPENROWSET(xlsx tab 2)
end try
begin catch
select 'Tab2 errored'
end catch

最新更新