1
我有一個簡單的存儲過程,即刪除當前數據並輸入新數據。如果輸入失敗,我想保留舊數據。我試圖使用下面的代碼,但是舊的數據總是被刪除,即使錯誤文件名是由錯誤生成的。執行始終返回0並表示成功。任何幫助將不勝感激。如何回滾執行
ALTER PROCEDURE [dbo].[UpdateMyTable]
@FileName varchar(200),
@errorFileName varchar(300),
AS
BEGIN
SET XACT_ABORT ON
BEGIN TRY
BEGIN Transaction T
Delete FROM [dbo].[MyTable]
DBCC CHECKIDENT('MyTable',RESEED,0)
Declare @sql varchar(max)
set @sql = '
BULK INSERT MyTable
From ''' + @FileName + '''
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
ERRORFILE = ''' + @errorFileName + '''
)'
EXEC (@sql)
COMMIT TRANSACTION T
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION T
END CATCH
END
更新問題:我使用SQL Express和管理工作室2012.看起來像EXEC把錯誤放入錯誤文件,沒有錯誤被捕獲到外面。
謝謝。
我把「交易」之外的「嘗試」,也不起作用。 – user3191850 2014-11-03 18:10:21