다음을 통해 공유


DBCC OPENTRAN(Transact-SQL)

지정한 데이터베이스에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제 트랜잭션에 대한 정보를 표시합니다. 활성 트랜잭션이 있거나 데이터베이스에 복제 정보가 있는 경우에만 결과가 표시됩니다. 활성 트랜잭션이 없을 경우 정보 메시지가 표시됩니다.

[!참고]

DBCC OPENTRAN은 SQL Server 이외 게시자에 대해 지원되지 않습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

DBCC OPENTRAN 
[ 
        ( [ database_name | database_id | 0 ] ) ]
    { [ WITH TABLERESULTS ]
      [ , [ NO_INFOMSGS ] ]
    }
] 

인수

  • database_name | database_id | 0
    가장 오래된 트랜잭션 정보를 표시할 데이터베이스의 이름 또는 ID입니다. 아무 값도 지정하지 않거나 0을 지정하면 현재 데이터베이스가 사용됩니다. 데이터베이스 이름은 식별자에 대한 규칙을 준수해야 합니다.

  • WITH
    옵션을 지정합니다.

  • TABLERESULTS
    결과를 테이블에 로드될 수 있는 테이블 형식으로 표시합니다. 이 옵션을 사용하면 테이블에 삽입하여 비교할 수 있는 결과 테이블이 생성됩니다. 이 옵션을 지정하지 않으면 결과가 읽기 쉬운 형식으로 표시됩니다.

  • NO_INFOMSGS
    모든 정보 메시지를 표시하지 않습니다.

주의

DBCC OPENTRAN을 사용하여 트랜잭션 로그 내에 열린 트랜잭션이 존재하는지 확인할 수 있습니다. BACKUP LOG 문을 사용할 때 열린 트랜잭션이 있으면 로그가 완전히 잘리지 않고 로그의 비활성 부분만 잘릴 수 있습니다. 열린 트랜잭션을 식별하려면 sp_who를 사용하여 시스템 프로세스 ID를 얻습니다.

결과 집합

열린 트랜잭션이 없을 경우 DBCC OPENTRAN은 다음 결과 집합을 반환합니다.

No active open transactions.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

사용 권한

sysadmin 고정 서버 역할이거나 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

1. 가장 오래된 활성 트랜잭션 반환

다음 예에서는 현재 데이터베이스에 대한 트랜잭션 정보를 얻습니다. 결과는 다를 수 있습니다.

CREATE TABLE T1(Col1 int, Col2 char(3));
GO
BEGIN TRAN
INSERT INTO T1 VALUES (101, 'abc');
GO
DBCC OPENTRAN;
ROLLBACK TRAN;
GO
DROP TABLE T1;
GO

결과 집합은 다음과 같습니다.

Transaction information for database 'master'.

Oldest active transaction:

SPID (server process ID) : 52

UID (user ID) : -1

Name          : user_transaction

LSN           : (518:1576:1)

Start time    : Jun 1 2004 3:30:07:197PM

SID           : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

[!참고]

"UID(사용자 ID)" 결과는 의미가 없으며 SQL Server의 이후 버전에서는 제거될 예정입니다.

2. WITH TABLERESULTS 옵션 지정

다음 예에서는 DBCC OPENTRAN 명령의 결과를 임시 테이블로 로드합니다.

-- Create the temporary table to accept the results.
CREATE TABLE #OpenTranStatus (
   ActiveTransaction varchar(25),
   Details sql_variant 
   )
-- Execute the command, putting the results in the table.
INSERT INTO #OpenTranStatus 
   EXEC ('DBCC OPENTRAN WITH TABLERESULTS, NO_INFOMSGS');

-- Display the results.
SELECT * FROM #OpenTranStatus;
GO