且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

TRY在BULK INSERT中没有CATCH错误

更新时间:2022-10-18 11:21:01

这是一个有助于捕捉此错误的选项:

  BEGIN TRY 
DECLARE @cmd varchar(1000)
SET @cmd ='BULK INSERT [dbo ]。[tblABC]
FROM''C:\temp.txt''
WITH(DATAFILETYPE =''widechar'',FIELDTERMINATOR ='';'',ROWTERMINATOR =''\\\
'')'
EXECUTE(@cmd)
END TRY

BEGIN CATCH
选择error_message()
END CATCH

此后,我在CATCH中收到以下错误:

 无法批量加载。文件C:\temp.txt不存在。 


Why in the following code TRY didn't catch the error and how can I catch this error?

BEGIN TRY
  BULK INSERT [dbo].[tblABC]
  FROM 'C:\temp.txt'
  WITH (DATAFILETYPE = 'widechar',FIELDTERMINATOR = ';',ROWTERMINATOR = '\n')
END TRY

BEGIN CATCH
  select error_message()
END CATCH

I just get this:

Msg 4860, Level 16, State 1, Line 2
Cannot bulk load. The file "C:\temp.txt" does not exist.

This is one option that helps to catch this error:

BEGIN TRY
 DECLARE @cmd varchar(1000)
 SET @cmd = 'BULK INSERT [dbo].[tblABC] 
  FROM ''C:\temp.txt'' 
  WITH (DATAFILETYPE = ''widechar'',FIELDTERMINATOR = '';'',ROWTERMINATOR = ''\n'')'
 EXECUTE (@cmd)
END TRY

BEGIN CATCH
 select error_message()
END CATCH

After this I got the following error in CATCH:

Cannot bulk load. The file "C:\temp.txt" does not exist.