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