Sql-Server
有沒有辦法從 xml 中獲取 sp_whoisactive 的隔離級別到普通結果中?
雖然我發現自己正在使用 sys.sysprocesses 和 sys.dm_exec_session 視圖重新設計 sp_who / sp_whoisactive 的功能,以了解有關在我的伺服器上執行的會話和事務的概述,但我想:“不,而是使用已經可用的東西並經過測試! ”
exec sp_whoisactive @get_additional_info = 1;
返回一個提供大量資訊的附加 XML 列,其中之一是Isolation Level。
我想在 sp_whoisactive 的主要結果集中設置隔離級別。有沒有人有同樣的要求並且已經解決了?為什麼它不從頭開始包含在主要結果集中,因為它是一個重要資訊。
使用 sp_whoisactive 的內置功能返回結果集的架構,您可以將該資訊儲存在臨時表中,然後用於
CROSS APPLY
從附加資訊中提取一個或多個 xml 節點--Drop temp table IF OBJECT_ID('tempdb.dbo.sp_whois_active') IS NOT NULL DROP TABLE tempdb.dbo.sp_whois_active --Use 'return_schema' to create a temp table to hold the results of sp_whoisactive DECLARE @s VARCHAR(MAX) EXEC sp_WhoIsActive @output_column_list = '[%]' ,@return_schema = 1 ,@schema = @s OUTPUT ,@get_additional_info = 1 SET @s = REPLACE(@s, '<table_name>', 'tempdb.dbo.sp_whois_active') EXEC (@s) --Populate the temp table by executing sp_whoisactive EXEC sp_WhoIsActive @output_column_list = '[%]' ,@destination_table = 'tempdb.dbo.sp_whois_active' ,@get_additional_info = 1 --Select all of the columns from the temp table and --use CROSS APPLY to extract one or more xml nodes SELECT who.* ,N.C.value('transaction_isolation_level[1]', 'varchar(100)') IsolationLevel FROM tempdb.dbo.sp_whois_active who CROSS APPLY additional_info.nodes('//additional_info') N(C)