如何在SQL Server 2008中捕获BCP进程中的异常?

时间:2012-03-22 04:50:51

标签: sql sql-server

我在SQL Server 2008中使用bcp。

在某些文本文件中,数据类型中存在错误,因此我在输出结果中收到错误消息,但这不会引发catch块中的任何异常

样品:

set @cmd='BCP In'
declare @xpcmdResult int
EXEC @xpcmdResult=xp_cmdShell @cmd 

@xpcmdResult应根据bcp流程成功结果为o或1

2 个答案:

答案 0 :(得分:2)

BCP不会以您期望的方式设置其返回代码。如果没有将返回码设置为1,BCP命令可能会有多种失败方式。

我发现检测BCP错误的最可靠方法是解析文本“错误”或“警告”的STDOUT,因为可以输出其中任何一个而不将返回码设置为1。

正如Pondlife所提到的,如果您可以选择使用BULK INSERT,那么请使用它。

答案 1 :(得分:1)

为什么在BULK INSERTOPENROWSET更容易时使用xp_cmdshell?然后你拥有TSQL中的所有东西,所以你应该能够捕获异常。您还应该查看general guidelines批量导入数据。

另一种方法是使用SSIS,但如果您只是导入单个文本文件,那可能会有点过分。