Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'inserimento collettivo di SQL Server è transazionale?

BULK INSERT agisce come una serie di INSERT individuali istruzioni e quindi, se il lavoro ha esito negativo, non esegue il rollback di tutti gli inserti sottoposti a commit.

Tuttavia, può essere inserito all'interno di una transazione in modo da poter fare qualcosa del genere:

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