如果我在sql Server 2000查询分析器中运行以下查询:
BULK INSERT OurTable FROM 'c:\OurTable.txt' WITH (CODEPAGE = 'RAW',DATAFILETYPE = 'char',FIELDTERMINATOR = '\t',ROWS_PER_BATCH = 10000,TABLOCK)
在符合WeTable的40行模式的文本文件上,然后更改最后20行的格式(可以说最后20行有更少的字段),我收到错误.然而,前40条线路承诺在桌子上.有没有关于我调用Bulk Insert的方式,使它不是事务性的,或者我需要做明确的事情强制它在失败时回滚?
解决方法
BULK INSERT作为一系列单独的INSERT语句,因此,如果作业失败,它不会回滚所有提交的插入.
然而,它可以放在一个交易中,这样你可以做这样的事情:
BEGIN TRANSACTION BEGIN TRY BULK INSERT OurTable FROM 'c:\OurTable.txt' WITH (CODEPAGE = 'RAW',TABLOCK) COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH