Sql-Server

有沒有辦法在 SQL SERVER 2008 中獲取目前事務 ID?

  • February 28, 2022

我想獲取目前事務 id 以在另一個程序中記錄某些內容。該程式碼實際上是在 .net 中執行的,但在 SQL Server 中它將類似於以下虛擬碼:

BEGIN TRAN

   <GET CURRENT_TRANSACTION_ID>

COMMIT TRAN

這是一個舊系統,只能在 SQL Server 2008 下執行。

你可以試試…

SELECT * FROM sys.dm_tran_current_transaction

或者更具體地為您的目的。

DECLARE @CurrentTran BIGINT

BEGIN TRANSACTION

SET @CurrentTran = (
   SELECT transaction_id FROM sys.dm_tran_current_transaction
)

COMMIT TRANSACTION

文件將其列為適用於所有受支持的 SQL Server 版本。

SQL Server 中有一些 DMV(動態管理視圖),您可以跟踪並獲取有關數據庫中請求或執行查詢的有用資訊。這是一個例子:

Select request_id, s.session_id, transaction_id, host_name, login_time, program_name, login_name, nt_user_name,
   text as QueryText
   From sys.dm_exec_sessions s
   Inner Join sys.dm_exec_requests r on r.session_id = s.session_id
   outer apply sys.dm_exec_sql_text(r.sql_handle)
   Where is_user_process = 1

引用自:https://dba.stackexchange.com/questions/308044