While @@Fetch_Status = 0
Begin
INSERT INTO [server].MyDatabase.dbo.Mytabletobeinserted (
UPC,
Sale_date)
VALUES(
@UPC,
@Sale_date)
'Inserting the error trapping here'
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION;
RETURN;
END
Update t_sale_from_pos
set been_sent = 'y'
where UPC = @UPC and sale_date=@sale_date
Fetch Next from CursorSale
into
@UPC,
@Sale_date
end
close CursorSale
deallocate CursorSale
このストアド プロシージャはスケジューラで毎日実行され、データはネットワーク経由で渡されます。このストアド プロシージャを実行すると、実行プロセス中に突然ネットワーク タイムアウトが発生します。これにより、すべての行が実行され、ネットワーク経由で他のサーバーに送信されます。
今、私の問題は次のとおりです。
- これは、ループ内でロールバック トランザクションを呼び出すデータにどのように影響しますか?
- すべての行を再度読み取り、挿入のためにサーバーに送信しますか、それとも実行中に失敗した行を読み取るだけですか?
アドバイスが必要です。ありがとう