我有一个INSERT
该语句占用了大量日志空间,以至于在该语句完成之前硬盘驱动器实际上已被填满。
问题是,我really不需要记录它,因为它只是中间数据上传步骤。
为了论证的缘故,假设我有:
- 表 A:初始上传表(使用填充
bcp
,所以没有日志记录问题)
- 表 B:填充使用
INSERT INTO B from A
有没有一种方法可以在 A 和 B 之间复制而不将任何内容写入日志?
附:我在用着SQL Server 2008 with simple恢复模型。
来自 Microsoft MVP 路易斯·戴维森 (Louis Davidson):
没有办法插入
根本不记录。选择进入是
最小化 T-SQL 日志记录的最佳方法,
使用SSIS你可以做同样的事情
使用批量插入进行轻量记录。
根据你的要求,我会
可能使用 SSIS,放弃所有
限制,特别是独特的和
主键,加载数据,
添加回约束。我加载
大约100GB只需一个多小时
这样,开销相当小。我
我正在使用批量记录恢复模型,
它只是记录新的存在
记录期间的范围,然后
您可以稍后删除它们。
关键是从准系统开始
桌子,它只是尖叫。建筑
索引一旦离开你就不会
要维护的索引,仅此一个
每个索引的索引构建。
如果您不想使用 SSIS,这一点仍然适用于删除所有约束并使用BULK LOGGED
恢复模型。这大大减少了日志记录INSERT INTO
陈述,因此应该可以解决您的问题。
http://msdn.microsoft.com/en-us/library/ms191244.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)