gpt4 book ai didi

sql-server - SQL Server 批量插入是事务性的吗?

转载 作者:行者123 更新时间:2023-12-02 06:23:33 26 4
gpt4 key购买 nike

如果我在 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 充当一系列单独的 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

关于sql-server - SQL Server 批量插入是事务性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com