【发布时间】:2010-10-29 15:22:10
【问题描述】:
我有 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
我的问题是:
执行此操作的最有效方法是什么(选择输入在高容量下表现良好)?表 A 中将有约 180,000,000 行,并且需要一次将约 4,000,000 行移动到表 B。
如何将其封装在一个事务中,以便在将行插入表 B 时出错,我不会从表 A 中删除行。我只是想确保不会意外删除一行从表 A 除非我已成功将其写入表 B。
您有什么好的 SQL Server 2005 书籍推荐吗?
谢谢, 克里斯
【问题讨论】:
-
如果您发布代码或 XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮
-
这是计划/触发任务吗?您需要多久执行一次此操作?
-
好吧,我的想法是,这个存储过程将从计划每天运行两次的 SSIS 包中执行。
-
我是 SSIS 新手,但根据我对 SSIS 的理解,我是否还需要在数据库中编写存储过程,然后从 SSIS 包中调用该过程?还是我错过了什么?
标签: sql sql-server-2005 stored-procedures