Чи є спосіб перерахувати відкриті транзакції на базі даних SQL Server 2000?


100

Хтось знає про будь-який спосіб перерахувати відкриті транзакції на базі даних SQL Server 2000?

Мені відомо, що я можу запитувати погляд sys.dm_tran_session_transactionsна версії бази даних SQL 2005 (і пізніших версій), однак це не доступно для SQL 2000.

Відповіді:


157

Для всіх баз даних запит sys.sysproces

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Для поточного використання бази даних:

DBCC OPENTRAN

34

Ви можете отримати всю інформацію про активну транзакцію за допомогою запиту нижче

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

і це дасть нижче аналогічний результат введіть тут опис зображення

і ви закриєте цю трансакцію за допомогою нижче вказівки KILL , уточнюючи ідентифікатор сесії

KILL 77

Нічого собі, це дуже приємно, мені подобається кількість наданих даних, єдине заперечення полягає в тому, що для його запуску вам потрібно бути адміністратором, DBCC OPENTRAN потребує меншої кількості дозволів. Але все-таки ... дуже добре
Йогурту

Дуже корисно, дякую! Якщо він відповів на питання ОП (SQL 2000), це повинна була бути прийнятою відповіддю. Запропонуйте пропозицію ...
Інженер, що

Чудово, отримав те, що хотів.
Vipul

23

DBCC OPENTRAN допомагає виявити активні транзакції, які можуть перешкоджати усіченню журналу. DBCC OPENTRAN відображає інформацію про найдавнішу активну транзакцію та найдавнішу розподілену та нерозподілену реплікувані транзакції, якщо такі є, в журналі транзакцій зазначеної бази даних. Результати відображаються лише в тому випадку, якщо в журналі є активна транзакція або якщо база даних містить інформацію про реплікацію.

Інформаційне повідомлення відображається, якщо в журналі немає активних транзакцій.

DBCC OPENTRAN


0

Використовуйте це, тому що щоразу, коли транзакція відкриє більше однієї транзакції, то нижче буде працювати SELECT * FROM sys.sysproces ДЕ ТАКОЖ open_tran <> 0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.