2024年仍需依赖SqlBulkCopy等工具快速复制SQL Server表行吗?
无需外部工具实现SQL Server低日志批量表复制
针对你提到的跨数据库表复制需求,SQL Server现在有原生的低日志批量操作方案,完全不需要依赖SSIS、SqlBulkCopy这类外部工具,核心方法如下:
1. 新建表时用SELECT ... INTO(低日志默认支持)
如果目标表还未创建,SELECT ... INTO本身就是低日志操作——只要数据库处于简单恢复模式或批量日志恢复模式,它会直接创建新表并批量写入数据,不会生成大量事务日志。这是最简洁的跨库复制方式:
SELECT * INTO dbo.TargetTable FROM AnotherDB.dbo.SourceTable
2. 向已有表插入用INSERT ... SELECT + TABLOCK提示
如果目标表已经存在,在INSERT语句中添加WITH (TABLOCK)提示,同时确保数据库处于简单/批量日志恢复模式,就能触发批量日志行为,大幅减少日志生成量:
INSERT INTO dbo.TargetTable WITH (TABLOCK) SELECT * FROM AnotherDB.dbo.SourceTable
注意:TABLOCK会对目标表施加排他锁,执行期间其他会话无法读写该表,需要根据业务并发情况评估使用时机。
关键前提:恢复模式设置
上述低日志效果仅在以下两种恢复模式下生效:
- 简单恢复模式
- 批量日志恢复模式
如果数据库处于完整恢复模式,即使使用上述方法,依然会生成完整事务日志。
内容的提问来源于stack exchange,提问作者Alain
相关产品推荐
相关产品推荐

