Jam*_*olt 4 sql-server database-internals transaction-log
fn_dblog()以这种格式显示交易 ID:
0000:00049d43
Run Code Online (Sandbox Code Playgroud)
并sys.dm_tran_database_transactions以这种格式显示交易 ID:
9811233
Run Code Online (Sandbox Code Playgroud)
我相信上面的例子显示了不同格式的相同交易ID。
有没有办法在两种格式之间进行转换?fn_dblog()或者这实际上是两个不同的实体——在这种情况下,是否有办法与交易相关的DMV进行匹配?
我不认为 的[Transaction ID]列sys.fn_dblog()是您要查找的交易 ID。transaction_id该结果集中与 的列匹配的事务 IDsys.dm_tran_database_transactions是[Xact ID]。
请尝试以下操作:
查找交易 ID
SELECT *
FROM sys.dm_tran_database_transactions
WHERE database_id = DB_ID();
Run Code Online (Sandbox Code Playgroud)
从日志中获取该交易的详细信息
DECLARE @TransactionID NVARCHAR(50);
SELECT @TransactionID = [Transaction ID]
FROM sys.fn_dblog(NULL, NULL)
WHERE [Xact ID] = 10450416; -- some [transaction_id] from sys.dm_tran_database_transactions
--SELECT @TransactionID;
SELECT *
FROM sys.fn_dblog(NULL, NULL)
WHERE [Transaction ID] = @TransactionID;
Run Code Online (Sandbox Code Playgroud)