2012-03-22 45 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,但如果您只是导入单个文本文件,则可能会矫枉过正。

相关问题