Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A inserção em massa do SQL Server é transacional?


BULK INSERT atua como uma série de INSERT individuais instruções e, portanto, se o trabalho falhar, ele não reverterá todas as inserções confirmadas.

Ele pode, no entanto, ser colocado dentro de uma transação para que você possa fazer algo assim:
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