在大容量导入中按最小方式记录日志的前提条件

只有在大容量日志恢复模式或简单恢复模式下,才可以按最小方式记录大容量导入操作。对于完整恢复模式下的数据库,大容量导入执行的所有行插入操作都会完整地记录在事务日志中。如果使用完整恢复模式,大型数据导入会导致填充事务日志的速度很快。相反,按最小方式记录日志可以降低大容量导入操作填充日志空间的几率。另外,按最小方式记录日志的效率也比按完整方式记录日志高。按最小方式记录日志要求数据库使用大容量日志恢复模式(如果数据库一般使用完整恢复)或简单恢复模式。

ms190422.note(zh-cn,SQL.90).gif注意:
有关在完整恢复模式和大容量日志恢复模式之间切换的信息,请参阅从完整恢复模式或大容量日志恢复模式进行切换的注意事项

按最小方式记录日志的表要求

按最小方式记录日志要求目标表满足下列所有条件:

ms190422.note(zh-cn,SQL.90).gif注意:
尽管在按最小方式记录日志的大容量导入操作过程中,数据插入操作没有记录在事务日志中,但每当为表分配新区时,数据库引擎仍会记录区分配信息。

表中的索引

对于某个表,是否按最小方式记录日志还取决于该表是否有索引,如果有,那么该表是否为空,如下所示:

  • 如果表没有索引,则按最小方式记录数据页。
  • 如果表没有聚集索引但是有一个或多个非聚集索引,则始终按最小方式记录数据页。但是,如何记录索引页取决于表是否为空,如下所示:
    • 如果表为空,则按最小方式记录索引页。
    • 如果表不为空,则按完整方式记录索引页。
    ms190422.note(zh-cn,SQL.90).gif注意:
    如果您以空表开始并分多批大容量导入数据,对于第一批,按最小方式记录索引页和数据页,但从第二批开始,只按最小方式记录数据页。
  • 如果表有聚集索引且为空,则按最小方式记录索引页和数据页。
    相反,如果表有聚集索引且不为空,则按完整方式记录数据页和索引页,而不管恢复模式为何。
    ms190422.note(zh-cn,SQL.90).gif注意:
    如果您以空表开始并分多批大容量导入数据,对于第一批,按最小方式记录索引页和数据页,但从第二批开始,只按大容量方式记录数据页。

有关详细信息(包括大容量导入过程中的表锁定和日志记录行为的摘要),请参阅优化大容量导入性能

**最佳方法:**当使用大容量日志恢复导入一组大型表行时,请考虑将大容量导入分成多批。每批相当于一个事务。这样,完成一批后,就可以备份其日志。下一次日志备份将回收用于大容量导入行批的日志空间。

请参阅

概念

选择数据库恢复模式

其他资源

bcp 实用工具
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL)
SuspendIndexing Property
UseBulkCopyOption Property

帮助和信息

获取 SQL Server 2005 帮助