문제

SQL Server 세션에서 자동 커밋을 어떻게 설정합니까?

도움이 되었습니까?

해결책

implicit_transactions를 설정하여 자동 커미트를 켜면 다음과 같습니다.

SET IMPLICIT_TRANSACTIONS OFF

설정이 켜져 있으면 암시 적 트랜잭션 모드로 돌아갑니다. 암시 적 트랜잭션 모드에서, 당신이하는 모든 변경은 수동으로 커밋 해야하는 트랜잭션을 시작합니다.

아마도 예는 더 명확합니다. 데이터베이스에 변경 사항이 작성됩니다.

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
COMMIT TRANSACTION

이것은 데이터베이스에 대한 변경을 작성하지 않습니다.

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

다음 예제는 행을 업데이트 한 다음 커밋 할 거래가 없다고 불평합니다.

SET IMPLICIT_TRANSACTIONS OFF
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

Mitch Wheat가 말했듯이 Autocommit은 SQL Server 2000 이상의 기본값입니다.

다른 팁

나는 더 영구적이고 빠른 방법을 원했습니다. 실제 업데이트/삽입 쿼리를 작성하기 전에 추가 라인을 추가하는 것을 잊어 버리는 경향이 있기 때문입니다.

나는 확인하여 그것을했다 implicit_transactions를 설정합니다 옵션에서 체크 박스. 옵션으로 이동하려면 선택합니다 도구> 옵션> 쿼리 실행> SQL Server> ANSI Microsoft SQL Server Management Studio에서

실행하십시오 commit 또는 rollback 쿼리를 실행 한 후. 그렇지 않으면 쿼리를 실행 한 테이블이 다른 사람을 위해 잠겨 있습니다.

AutoCommit은 SQL Server의 기본 트랜잭션 관리 모드입니다. (SQL 2000 이후)

ref : 자동 커밋 트랜잭션

SQLSERVER 2005 Express와 함께, 내가 찾은 것은 자동 커밋 꺼, DB 테이블에 대한 삽입은 실제로 관리 스튜디오 세션에서 커밋 명령을 내리지 않고 커밋되었습니다. 유일한 차이점은 언제였습니다 AutoCommit이 꺼져 있었고 모든 삽입을 롤백 할 수있었습니다. 와 함께 *자동 커밋 켜기, 나는 할 수 없었다.* 사실, 나는 틀렸다. 자동 커밋 모드가 꺼지면 명령이 발행 된 QA (Query Analyzer) 창에서만 변경 사항이 표시됩니다. 새 QA (Query Analyzer) 창을 터뜨렸다면 첫 번째 창 (세션)의 변경 사항이 표시되지 않습니다. 즉, 커밋되지 않았습니다! 다른 세션 (QA Windows)에 변경 사항을 표시하기 위해 명시 적 커밋 또는 롤백 명령을 발행해야했습니다. 내 잘못이야! 일이 올바르게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top