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. |
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.
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.
Informations de transaction pour la base de données 'master'.
Plus ancienne transaction active :
SPID (ID du processus serveur) : 52
UID (ID d'utilisateur) : -1
Nom : user_transaction
Numéro séquentiel dans le journal : (518:1576:1)
Heure de début : Juin 1 2004 3:30:07:197PM
SID : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
Exécution de DBCC terminée. Si DBCC vous a adressé des messages d'erreur, contactez l'administrateur système.
Remarque |
|---|
Le résultat « UID (ID d'utilisateur) » 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

Remarque