복붙노트

[SQL] MS SQL Server 관리 Studio에서 트랜잭션 작업에 가장 좋은 방법은

SQL

MS SQL Server 관리 Studio에서 트랜잭션 작업에 가장 좋은 방법은

하자 내가 구문과 실행, 그래서 의미 맞습니다 SQL 문을 말한다.

관리 Studio (또는 다른 쿼리 도구)에서 내가 어떻게 테스트 SQL 문, 그리고 나는 그들이 무엇인가, 롤백 파산 통지하는 경우 (별도의 쿼리를?)

해결법

  1. ==============================

    1.가장 쉬운 것은 트랜잭션에 코드를 포장 한 다음 라인으로 T-SQL 코드 라인의 각 배치를 실행하는 것입니다.

    가장 쉬운 것은 트랜잭션에 코드를 포장 한 다음 라인으로 T-SQL 코드 라인의 각 배치를 실행하는 것입니다.

    예를 들어,

    Begin Transaction
    
             -Do some T-SQL queries here.
    
    Rollback transaction -- OR commit transaction
    

    당신은 당신이 TRY ... CATCH 블록을 사용하여 수행 할 수 있습니다 오류 처리를 통합합니다. 오류는 다음 catch 블록 내에서 tranasction를 롤백 할 수 있습니다 발생합니다.

    예를 들면 :

    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

    희망이 도움이하지만 당신은 자세한 내용이 필요하면 알려 주시기 바랍니다.

  2. ==============================

    2.나는 점을 추가 할 당신은 또한 할 수있는 (그리고 당신이 작성하는 것은 복잡한 경우해야) 테스트 모드에있는 경우 롤백에 테스트 변수를 추가하는. 그럼 당신은 한 번에 모든 일을 실행할 수 있습니다. 이 복잡한 스크립트 특히 자주 다양한 작업의 전후 결과를 확인하는 코드를 추가합니다.

    나는 점을 추가 할 당신은 또한 할 수있는 (그리고 당신이 작성하는 것은 복잡한 경우해야) 테스트 모드에있는 경우 롤백에 테스트 변수를 추가하는. 그럼 당신은 한 번에 모든 일을 실행할 수 있습니다. 이 복잡한 스크립트 특히 자주 다양한 작업의 전후 결과를 확인하는 코드를 추가합니다.

    예 아래 :

    USE AdventureWorks;
    GO
    DECLARE @TEST INT = 1--1 is test mode, use zero when you are ready to execute
    BEGIN TRANSACTION;
    
    BEGIN TRY
         IF @TEST= 1
            BEGIN
                SELECT *FROM Production.Product
                    WHERE ProductID = 980;
            END    
        -- Generate a constraint violation error.
        DELETE FROM Production.Product
        WHERE ProductID = 980;
    
         IF @TEST= 1
            BEGIN
                SELECT *FROM Production.Product
                    WHERE ProductID = 980;
                IF @@TRANCOUNT > 0
                    ROLLBACK TRANSACTION;
            END    
    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 AND @TEST = 0
        COMMIT TRANSACTION;
    GO
    
  3. from https://stackoverflow.com/questions/506602/best-way-to-work-with-transactions-in-ms-sql-server-management-studio by cc-by-sa and MIT license