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