3

在来自 tsql 的 bcp 输出命令完成其工作(导出文件)之后,您通常希望随后清理源。这通常涉及截断源表或设置记录确实已处理的标志。

如果你不清理下一个导出当然会包括旧的和已经导出的行。

我的实验表明,您不能在事务中放置 bcp。我的假设是它是一个进程外工具并且不加入发起事务(如果我错了,请纠正我)。

问题是是否有可能以其他方式将这两个动作作为一个工作单元执行?要么一起失败,要么一起成功。

我希望有一个“发布操作”可以传递给 bcp,以便 bcp 本身可以保证像 begaviour 这样的交易。

谢谢你的想法,汤姆

4

1 回答 1

0

怎么样:通过将它们的 PK id 写入处理表来标记所有行。接下来使用 xp_cmdshell 运行 BCP 并检查错误(参见本文的示例)。如果一切运行良好,则使用处理表查找要删除的原始行。否则,请清除该处理表,然后您就可以重试了。

于 2012-04-15T05:53:26.450 回答