Programing

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

lottogame 2020. 11. 27. 07:40
반응형

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


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


implicit_transactions를 OFF로 설정하여 자동 커밋을 켤 수 있습니다.

SET IMPLICIT_TRANSACTIONS OFF

설정이 ON이면 암시 적 트랜잭션 모드로 돌아갑니다. 암시 적 트랜잭션 모드에서는 모든 변경 사항이 수동으로 커밋해야하는 트랜잭션을 시작합니다.

예가 더 명확 할 수 있습니다. 이렇게하면 데이터베이스에 변경 사항이 기록됩니다.

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가 말했듯이 자동 커밋은 Sql Server 2000 이상에서 기본값입니다.


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

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

실행 commit하거나 rollback쿼리 실행을 마친 후에 확인하십시오 . 그렇지 않으면 쿼리를 실행했을 테이블이 다른 사용자를 위해 잠 깁니다.


자동 커밋은 SQL Server의 기본 트랜잭션 관리 모드입니다. (SQL 2000 이상)

참조 : 자동 커밋 트랜잭션


SQLServer 2005 Express를 사용하면 자동 커밋이 꺼져 있어도 실제로 Management Studio 세션에서 커밋 명령을 실행하지 않고 Db 테이블에 대한 삽입 커밋 된다는 사실을 발견 했습니다. 유일한 차이점은 자동 커밋이 꺼져 있을 때 모든 삽입을 롤백 할 수 있다는 것입니다. * 자동 커밋을 사용 하면 할 수 없습니다. * 사실 나는 틀렸다. 자동 커밋 모드를 끄면 명령이 실행 된 QA (쿼리 분석기) 창에만 변경 사항이 표시됩니다. 새 QA (쿼리 분석기) 창을 열면 첫 번째 창 (세션)에서 변경 한 내용이 표시되지 않습니다. 즉, 커밋되지 않았습니다! 다른 세션 (QA 창)에 변경 사항을 표시하기 위해 명시 적 커밋 또는 롤백 명령을 실행해야했습니다.내 잘못이야! 모든 것이 올바르게 작동하고 있습니다.

참고 URL : https://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session

반응형