当前位置:  开发笔记 > 数据库 > 正文

SQL Server批量插入是否是事务性的?

如何解决《SQLServer批量插入是否是事务性的?》经验,为你挑选了1个好方法。

如果我在SQL Server 2000查询分析器中运行以下查询:

BULK INSERT  OurTable 
FROM 'c:\OurTable.txt' 
WITH (CODEPAGE = 'RAW', DATAFILETYPE = 'char', FIELDTERMINATOR = '\t', ROWS_PER_BATCH = 10000, TABLOCK)

在符合OurTable架构40行的文本文件上,但随后更改最后20行的格式(假设最后20行的字段较少),我收到错误.但是,前40行都致力于表格.有什么关于我调用Bulk Insert的方式使它不是事务性的,或者我是否需要做一些明确的事情来强制它在失败时回滚?



1> Josef..:

BULK INSERT充当一系列单独的INSERT语句,因此,如果作业失败,它不会回滚所有已提交的插入.

但是,它可以放在一个事务中,所以你可以做这样的事情:

BEGIN TRANSACTION
BEGIN TRY
BULK INSERT  OurTable 
FROM 'c:\OurTable.txt' 
WITH (CODEPAGE = 'RAW', DATAFILETYPE = 'char', FIELDTERMINATOR = '\t', 
   ROWS_PER_BATCH = 10000, TABLOCK)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH


如果要插入大量行,请注意事务日志被填满等.
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有