Partilhar via


DBCC OPENTRAN (Transact-SQL)

DBCC OPENTRAN ajuda a identificar as transações ativas que podem impedir o truncamento do log. DBCC OPENTRAN exibe informações sobre a transação ativa mais antiga e sobre as transações replicadas distribuídas e não distribuídas mais antigas, se houver, dentro do log de transação do banco de dados especificado. Os resultados serão exibidos somente se houver uma transação ativa que existe no log ou se o banco de dados contiver informações de replicação. Uma mensagem informativa será exibida se não houver transações ativas no log.

ObservaçãoObservação

DBCC OPENTRAN não tem suporte em publicadores que não sejam SQL Server.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • database_name | database_id| 0
    É o nome ou a ID do banco de dados para o qual exibir as informações de transação mais antigas. Se não for especificado ou se 0 for especificado, o banco de dados atual será usado. Os nomes de bancos de dados devem obedecer às regras de identificadores.

  • TABLERESULTS
    Especifica os resultados em um formato de tabela que pode ser carregado em uma tabela. Use essa opção para criar uma tabela de resultados que possa ser inserida em uma tabela para comparações. Quando essa opção não é especificada, os resultados são formatados para leitura.

  • NO_INFOMSGS
    Suprime todas as mensagens informativas.

Comentários

Use DBCC OPENTRAN para determinar se uma transação aberta existe no log de transações. Quando você usa a instrução BACKUP LOG, só a parte inativa do log pode ser truncada; uma transação aberta pode impedir que o log seja truncado completamente. Para identificar uma transação aberta, use sp_who para obter a ID de processo do sistema.

Conjuntos de resultados

DBCC OPENTRAN retorna o seguinte conjunto de resultados quando não há transações abertas:

No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Permissões

Exige associação na função de servidor fixa sysadmin ou na função de banco de dados fixa db_owner.

Exemplos

A.Retornando a transação ativa mais antiga

O exemplo a seguir obtém informações de transação para o banco de dados atual. Os resultados podem variar.

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

Aqui está o conjunto de resultados.

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.

ObservaçãoObservação

O resultado "UID (ID do usuário)" é sem-sentido e será removido em uma versão futura do SQL Server.

B.Especificando a opção WITH TABLERESULTS

O exemplo a seguir carrega os resultados do comando DBCC OPENTRAN como uma tabela temporária.

-- 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

Consulte também

Referência

BEGIN TRANSACTION (Transact-SQL)

COMMIT TRANSACTION (Transact-SQL)

DBCC (Transact-SQL)

DB_ID (Transact-SQL)

ROLLBACK TRANSACTION (Transact-SQL)