【问题标题】:Put bcp inside a transaction with another tsql statement将 bcp 放入带有另一个 sql 语句的事务中
【发布时间】:2012-04-23 21:32:28
【问题描述】:

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

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

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

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

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

谢谢你的想法,汤姆

【问题讨论】:

    标签: sql-server tsql transactions bcp


    【解决方案1】:

    怎么样:通过将它们的 PK id 写入处理表来标记所有行。接下来使用 xp_cmdshell 运行 BCP 并检查错误 (see this article for an example)。如果一切运行良好,则使用处理表查找要删除的原始行。否则,请清除该处理表并准备重试。

    【讨论】:

      猜你喜欢
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      相关资源
      最近更新 更多