繁体   English   中英

SQL Server 2005:存储过程将行从一个表移动到另一个表

[英]SQL Server 2005: stored procedure to move rows from one table to another

我有2个相同方案的表。 我需要将超过90天的行(基于表中存在的dataTime列)从表A移动到表B。这是我想做的伪代码

SET @Criteria = getdate()-90

Select * from table A
Where column X<@Criteria
Into table B

--now clean up the records we just moved to table B, in Table A
delete from table A Where column X<@Criteria

我的问题是:

  1. 什么是最有效的方法(选择量大时效果会很好)? 表A中将有〜180,000,000行,并且需要一次将〜4,000,000行移至表B。

  2. 我如何将其封装在一个事务下,这样如果将行插入表B时出错,就不会从表A中删除行。我只想确保我不会意外地从表A中删除行,除非我有已成功将其写入表B。

  3. 您是否推荐任何好的SQL Server 2005书籍?

谢谢克里斯

我认为SSIS可能是满足您需求的最佳解决方案。

我认为您可以仅使用SSIS任务(例如数据流任务)来满足您的需求。 似乎没有必要为逻辑单独创建一个过程。

可以使用TransactionOption属性为任何数据流任务设置事务。 查看有关如何在SSIS中使用事务的本文

有关SSIS软件包以及如何创建它们的一些基本教程,可以在此处此处参考。

关于如何将其封装在一个事务中,以便在将行插入表B时出错时不会从表A中删除行。

您可以使用联接从A中删除B中的所有行。 然后,如果复制到B失败,则不会从A删除任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM