2012-03-22 62 views
0

我在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

回答

2

BCP不會按照您預期的方式設置其返回代碼。有很多方法可以使BCP命令失敗,但返回碼不會設置爲1.

我發現檢測BCP錯誤的最可靠方法是解析STDOUT以獲取文本「錯誤」或「警告「,因爲這些中的任何一個都可以在沒有將返回碼設置爲1的情況下輸出。

由於Pondlife提到,如果您可以選擇使用BULK INSERT,那就用它來代替。

1

你爲什麼要使用xp_cmdshell的時候BULK INSERTOPENROWSET會更容易?然後你在TSQL中擁有一切,所以你應該能夠捕捉到異常。您應該也可以查看批量導入數據的general guidelines

另一種方法是使用SSIS,但如果您只是導入單個文本文件,則可能會矯枉過正。

相關問題