Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist SQL Server-Masseneinfügung transaktional?

BULK INSERT fungiert als eine Reihe von einzelnen INSERT -Anweisungen und daher werden, wenn der Job fehlschlägt, nicht alle festgeschriebenen Einfügungen rückgängig gemacht.

Es kann jedoch innerhalb einer Transaktion platziert werden, sodass Sie etwa Folgendes tun könnten:

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