Kar*_*arl 5 sql logging bulkinsert insert sql-server-2008
我有一个INSERT声明,它占用了大量的日志空间,以至于硬盘驱动器在声明完成之前实际上已经填满了.
问题是,我真的不需要记录它,因为它只是一个中间数据上传步骤.
为了论证,让我说我有:
bcp,因此没有日志记录问题)INSERT INTO B from A有没有一种方法可以在A和B之间复制而不会将任何内容写入日志?
PS我正在使用SQL Server 2008和简单的恢复模型.
来自微软 MVP 路易斯戴维森:
根本没有记录就无法插入。SELECT INTO 是在 T-SQL 中最小化日志记录的最佳方法,使用 SSIS 您可以使用 Bulk Insert 执行相同类型的轻型日志记录。
根据您的要求,我可能会使用 SSIS,删除所有约束,尤其是唯一键和主键,加载数据,然后添加约束。我像这样在一个多小时内加载了大约 100GB,开销相当小。我正在使用 BULK LOGGED 恢复模型,它只在日志记录期间记录新范围的存在,然后您可以稍后删除它们。
关键是从准系统表开始,它只是尖叫。构建索引一旦离开,您将无需维护任何索引,每个索引只构建一个索引。
如果您不想使用 SSIS,这一点仍然适用于删除所有约束并使用BULK LOGGED恢复模型。这大大减少了对INSERT INTO语句的日志记录,因此应该可以解决您的问题。
http://msdn.microsoft.com/en-us/library/ms191244.aspx
| 归档时间: |
|
| 查看次数: |
9314 次 |
| 最近记录: |