1. ホーム
  2. sql

[解決済み] MS SQL Server Management Studio でトランザクションを処理する最適な方法

2022-07-09 13:02:49

質問

構文的にも意味的にも正しいSQL文があり、それが実行されるとします。

Management Studio (または他のクエリツール) では、どのように SQL 文をテストし、何かを壊したことに気づいたら、ロールバック (別のクエリで?) することができますか?

どのように解決するのですか?

最も簡単な方法は、コードをトランザクションでラップし、T-SQL コードの各バッチを 1 行ずつ実行することです。

例えば

Begin Transaction

         -Do some T-SQL queries here.

Rollback transaction -- OR commit transaction

エラー処理を組み込みたい場合は、TRY...CATCH BLOCKを使用することで実現できます。エラーが発生した場合は、キャッチブロックの中でトランザクションをロールバックすることができます。

例えば

USE AdventureWorks;
GO
BEGIN TRANSACTION;

BEGIN TRY
    -- Generate a constraint violation error.
    DELETE FROM Production.Product
    WHERE ProductID = 980;
END TRY
BEGIN CATCH
    SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage;

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;
GO

詳しくは以下のリンクをご覧ください。

http://msdn.microsoft.com/en-us/library/ms175976.aspx

これがお役に立てれば幸いですが、もっと詳細が必要な場合はお知らせください。