Partager via


DBCC OPENTRAN (Transact-SQL)

Affiche les informations relatives à la transaction active la plus ancienne et les transactions de réplication distribuées et non distribuées les plus anciennes, le cas échéant, à l'intérieur d'une base de données spécifiée. Les résultats ne sont affichés que s'il existe une transaction active ou si la base de données contient des informations de réplication. Un message d'informations est affiché s'il n'y a pas de transactions actives.

[!REMARQUE]

DBCC OPENTRAN n'est pas pris en charge pour les serveurs de publication non-SQL Server.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • database_name | database_id | 0
    Nom ou ID de la base de données pour laquelle les informations de transaction les plus anciennes sont affichées. Si aucune valeur n'est spécifiée ou si 0 est indiqué, c'est la base de données active qui est utilisée. Les noms des bases de données doivent suivre les règles applicables aux identificateurs.

  • WITH
    Permet de spécifier des options.

  • TABLERESULTS
    Spécifie les résultats sous le format d'un tableau qui peut être chargé dans une table. Vous devez utiliser cette option pour créer une table de résultats pouvant être insérée dans une table à des fins de comparaison. Lorsque cette option n'est pas précisée, les résultats sont mis en forme pour pouvoir être lus.

  • NO_INFOMSGS
    Supprime tous les messages d'information.

Notes

Vous devez utiliser DBCC OPENTRAN pour déterminer l'existence d'une transaction ouverte dans le journal des transactions. L'instruction BACKUP LOG ne permet de vider que la partie inactive du journal. Une transaction ouverte peut empêcher la troncature complète du journal. Pour identifier une transaction ouverte, utilisez sp_who pour obtenir l'ID du processus système.

Jeux de résultats

DBCC OPENTRAN renvoie le jeu de résultats suivant lorsqu'il n'y a pas de transactions ouvertes :

No active open transactions.

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

Autorisations

Requiert l'appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner.

Exemples

A. Renvoi de la transaction active la plus ancienne

L'exemple suivant obtient des informations de transaction pour la base de données active. Les résultats peuvent varier.

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

Voici l'ensemble des résultats.

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.

[!REMARQUE]

Le résultat « UID (user ID) » est sans signification et sera supprimé dans une future version de SQL Server.

B. Utilisation de l'option WITH TABLERESULTS

L'exemple suivant charge les résultats de la commande DBCC OPENTRAN dans une table temporaire.

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