Sql-Server
有沒有辦法在 SQL SERVER 2008 中獲取目前事務 ID?
我想獲取目前事務 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