我在SQL Server 2008中如何在SQL Server 2008中捕獲BCP過程中的異常?
使用bcp在一些文本文件中存在的數據類型的錯誤,所以我在輸出結果收到錯誤消息,但這不是在catch塊
樣品引發任何異常:
set @cmd='BCP In'
declare @xpcmdResult int
EXEC @xpcmdResult=xp_cmdShell @cmd
@xpcmdResult
應導致O或基於BCP過程成功1
我在SQL Server 2008中如何在SQL Server 2008中捕獲BCP過程中的異常?
使用bcp在一些文本文件中存在的數據類型的錯誤,所以我在輸出結果收到錯誤消息,但這不是在catch塊
樣品引發任何異常:
set @cmd='BCP In'
declare @xpcmdResult int
EXEC @xpcmdResult=xp_cmdShell @cmd
@xpcmdResult
應導致O或基於BCP過程成功1
BCP不會按照您預期的方式設置其返回代碼。有很多方法可以使BCP命令失敗,但返回碼不會設置爲1.
我發現檢測BCP錯誤的最可靠方法是解析STDOUT以獲取文本「錯誤」或「警告「,因爲這些中的任何一個都可以在沒有將返回碼設置爲1的情況下輸出。
由於Pondlife提到,如果您可以選擇使用BULK INSERT
,那就用它來代替。
你爲什麼要使用xp_cmdshell的時候BULK INSERT或OPENROWSET會更容易?然後你在TSQL中擁有一切,所以你應該能夠捕捉到異常。您應該也可以查看批量導入數據的general guidelines。
另一種方法是使用SSIS,但如果您只是導入單個文本文件,則可能會矯枉過正。