C'è un modo per elencare le transazioni aperte nel database di SQL Server 2000?


100

Qualcuno conosce un modo per elencare le transazioni aperte sul database di SQL Server 2000?

Sono consapevole di poter interrogare la vista sys.dm_tran_session_transactionssulle versioni del database SQL 2005 (e successive), tuttavia questo non è disponibile su SQL 2000.

Risposte:


157

Per tutti i database interrogare sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Per il database corrente utilizzare:

DBCC OPENTRAN

34

Puoi ottenere tutte le informazioni sulla transazione attiva con l'aiuto della query sottostante

SELECT
trans.session_id AS [SESSION ID],
ESes.host_name AS [HOST NAME],login_name AS [Login NAME],
trans.transaction_id AS [TRANSACTION ID],
tas.name AS [TRANSACTION NAME],tas.transaction_begin_time AS [TRANSACTION 
BEGIN TIME],
tds.database_id AS [DATABASE ID],DBs.name AS [DATABASE NAME]
FROM sys.dm_tran_active_transactions tas
JOIN sys.dm_tran_session_transactions trans
ON (trans.transaction_id=tas.transaction_id)
LEFT OUTER JOIN sys.dm_tran_database_transactions tds
ON (tas.transaction_id = tds.transaction_id )
LEFT OUTER JOIN sys.databases AS DBs
ON tds.database_id = DBs.database_id
LEFT OUTER JOIN sys.dm_exec_sessions AS ESes
ON trans.session_id = ESes.session_id
WHERE ESes.session_id IS NOT NULL

e darà di seguito un risultato simile inserisci qui la descrizione dell'immagine

e chiudi quella transazione dalla guida sotto la query KILL facendo riferimento all'ID di sessione

KILL 77

Wow, questo è molto carino, mi piace la quantità di dati forniti, l'unico svantaggio è che devi essere amministratore per eseguirlo, DBCC OPENTRAN necessita di meno autorizzazioni. Ma comunque ... molto buono
Yogurtu

Molto utile, grazie! Se ha risposto alla domanda dell'OP (SQL 2000), avrebbe dovuto essere la risposta accettata. Avere un voto positivo ...
Ingegnere inverso

Fantastico, ho ottenuto quello che volevo.
Vipul

23

DBCC OPENTRAN aiuta a identificare le transazioni attive che potrebbero impedire il troncamento del registro. DBCC OPENTRAN visualizza le informazioni sulla transazione attiva più vecchia e sulle transazioni replicate distribuite e non distribuite più vecchie, se presenti, nel log delle transazioni del database specificato. I risultati vengono visualizzati solo se è presente una transazione attiva nel registro o se il database contiene informazioni sulla replica.

Se non sono presenti transazioni attive nel registro, viene visualizzato un messaggio informativo.

DBCC OPENTRAN


0

Usa questo perché ogni volta che la transazione apre più di una transazione, di seguito funzionerà SELECT * FROM sys.sysprocesses WHERE open_tran <> 0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.