[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
所以我們就可以建立一個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
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^