Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'insertion en bloc SQL Server est-elle transactionnelle ?

BULK INSERT agit comme une série de INSERT individuels et donc, si le travail échoue, il n'annule pas toutes les insertions validées.

Il peut cependant être placé dans une transaction afin que vous puissiez faire quelque chose comme ceci :

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