Condividi tramite


DBCC OPENTRAN (Transact-SQL)

DBCC OPENTRAN consente di identificare le transazioni attive che possono impedire il troncamento del log. DBCC OPENTRAN visualizza informazioni sulle transazioni attive meno recenti e sulle eventuali transazioni di replica meno recenti, distribuite e non, all'interno del log delle transazioni del database specificato. I risultati vengono visualizzati solo se viene rilevata una transazione esistente nel log o se il database contiene informazioni di replica. In assenza di transazioni attive nel log viene visualizzato un messaggio informativo.

Nota

L'istruzione DBCC OPENTRAN non è supportata per server di pubblicazione non SQL Server.

Si applica a: SQL Server (da SQL Server 2008 a versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • database_name | database_id| 0
    Nome o ID del database per il quale visualizzare le informazioni sulle transazioni meno recenti. Se omesso oppure se viene specificato 0, viene utilizzato il database corrente. I nomi dei database devono essere conformi alle regole per gli identificatori.

  • TABLERESULTS
    Specifica i risultati in un formato tabulare caricabile in una tabella. Utilizzare questa opzione per creare una tabella di risultati che è possibile inserire in una tabella per l'esecuzione di confronti. Se questa opzione viene omessa, i risultati vengono formattati in modo da migliorare la leggibilità.

  • NO_INFOMSGS
    Disattiva tutti i messaggi informativi.

Osservazioni

Utilizzare l'istruzione DBCC OPENTRAN per determinare se il log delle transazioni include una transazione aperta. Quando si utilizza l'istruzione BACKUP LOG, è possibile troncare solo la sezione inattiva del log. La presenza di una transazione aperta può comportare un troncamento incompleto del log. Per identificare una transazione aperta, utilizzare la stored procedure sp_who per ottenere l'ID del processo di sistema.

Set di risultati

In assenza di transazioni aperte, l'istruzione DBCC OPENTRAN restituisce il set di risultati seguente:

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

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner.

Esempi

A.Restituzione della transazione attiva meno recente

Nell'esempio seguente vengono recuperate le informazioni sulle transazioni per il database corrente. I risultati possono variare.

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

Set di risultati:

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.

Nota

Il risultato di "UID (ID utente)" non è significativo e sarà rimosso in una prossima versione di SQL Server.

B.Specifica dell'opzione WITH TABLERESULTS

Nell'esempio seguente vengono caricati i risultati del comando DBCC OPENTRAN in una tabella temporanea.

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

Vedere anche

Riferimento

BEGIN TRANSACTION (Transact-SQL)

COMMIT TRANSACTION (Transact-SQL)

DBCC (Transact-SQL)

DB_ID (Transact-SQL)

ROLLBACK TRANSACTION (Transact-SQL)