DBCC OPENTRAN (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Facilite l’identification des transactions actives qui peuvent empêcher la troncation du journal. DBCC OPENTRAN affiche les informations relatives à la transaction active la plus ancienne et aux transactions répliquées distribuées et non distribuées les plus anciennes, le cas échéant, dans le journal des transactions de la base de données spécifiée. Les résultats ne sont affichés que s'il existe une transaction active dans le journal ou si la base de données contient des informations de réplication. Un message d'information est affiché s'il n'y a pas de transactions actives dans le journal.

Notes

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

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

database_name | database_id | 0

Nom ou ID de la base de données pour laquelle les informations des transactions les plus anciennes sont affichées. En l'absence de spécification, ou si 0 est spécifié, la base de données actuelle est utilisée. Les noms de base de données doivent suivre les règles applicables aux identificateurs.

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 spécifiée, les résultats sont mis en forme pour être lisibles.

NO_INFOMSGS

Supprime tous les messages d'information.

Notes

Utilisez DBCC OPENTRAN pour déterminer la présence d'une transaction ouverte dans le journal des transactions. Quand l’instruction BACKUP LOG est utilisée, seule la partie inactive du journal peut être tronquée. Une transaction ouverte peut empêcher la troncature complète du journal. Pour identifier une transaction ouverte, utilisez sp_who afin d’obtenir l'ID du processus système.

Jeux de résultats

DBCC OPENTRAN retourne 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

Nécessite l’appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner .

Exemples

R. Retourner 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 le jeu de résultats obtenu.

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.

Notes

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

B. Spécifier 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