차이점은 "표준 명령"은 암시 적 트랜잭션 ( "명시 적"이 아닌 다른 의미를 가진 실제 암시 적 트랜잭션이 아님)을 가지므로 INSERT
명시 적 트랜잭션없이 명령 을 실행할 때마다 트랜잭션이 열립니다. 데이터를 삽입하고 자동 커밋합니다. 이를 자동 커밋 트랜잭션이라고합니다.
이것이 또한 롤백 할 수없는 이유 INSERT
입니다. 이미 커밋되었습니다. 따라서이 규칙은 명시 적 트랜잭션과 동일합니다. 일단 커밋 된 후에는 롤백 할 수 없습니다 .
SQL Server 내부에서 직접 의미하는 것을 볼 수 있습니다.
Microsoft sys.fn_dblog
는 주어진 데이터베이스의 트랜잭션 로그를 살펴볼 수 있는 DMF라는 SQL Server를 제공합니다.
이 간단한 실험을 위해 AdventureWorks 데이터베이스를 사용하겠습니다.
USE AdventureWorks2008;
GO
SELECT TOP 10 *
FROM dbo.Person;
GO
INSERT INTO dbo.Person (FirstName, MiddleName, LastName, Gender, Date)
VALUES ('Never', 'Stop', 'Learning', 'M', GETDATE());
COMMIT;
BEGIN TRAN;
INSERT INTO dbo.Person (FirstName, MiddleName, LastName, Gender, Date)
VALUES ('Never', 'Stop', 'Learning', 'M', GETDATE());
COMMIT;
GO
SELECT *
FROM sys.fn_dblog(NULL, NULL);
GO
여기서는 두 가지 삽입 작업을 수행합니다. 하나는 명시 적 트랜잭션이 있거나없는 것입니다.
로그 파일에서이 둘 사이에는 전혀 차이가 없음을 알 수 있습니다.
빨간색 INSERT
트랜잭션은 자동 커밋 트랜잭션 내에 있고 파란색 INSERT
트랜잭션은 명시 적 트랜잭션입니다.
언급 한 타사 도구의 경우 데이터베이스 로그를 분석하고 작업을 "실행 취소"하거나 "다시 실행"하는 일반적인 T-SQL 코드를 생성합니다. 일반적으로 로그 파일에있는 것과 정확히 반대의 효과를주는 스크립트를 생성하는 것 외에는 특별한 작업을 수행하지 않습니다.