如果我在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的方式使它不是事务性的,或者我是否需要做一些明确的事情来强制它在失败时回滚?
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