[SQL]取得SQL交易中的交易的識別碼(transaction_id)

[SQL]取得SQL交易中的交易的識別碼(transaction_id)

今天在討論如何將資料庫中的相關SQL記錄下來外,除了以session_id(@@SPID)來記錄外,可以再記錄交易的識別碼(transaction_id)。

那要如何取得交易的識別碼(transaction_id)呢?

可以從 sys.dm_tran_session_transactions 取得,如下,

BEGIN TRAN
SELECT * FROM sys.dm_tran_session_transactions WHERE session_id = @@SPID
ROLLBACK

image

 

所以我們就可以建立一個function來取得交易的識別碼(transaction_id),如下,

CREATE FUNCTION dbo.GetTransactionId()
RETURNS BIGINT 
AS
BEGIN
	declare @return BIGINT, @session_id int 
	set @session_id = @@SPID 
	SELECT @return = transaction_id 
		FROM sys.dm_tran_session_transactions 
		WHERE session_id = @session_id
	RETURN  ISNULL(@return, 0)

END
GO

 

測試如下,

SELECT dbo.GetTransactionId()
BEGIN TRAN
SELECT dbo.GetTransactionId()
ROLLBACK

image

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^