徵狀
假設您在 Microsoft SQL Server 2012 中建立具有謂詞的 XEvent 會話。 當您重複啟動並停止 XEvent 會話時,會發生記憶體洩漏,您會注意到由「MEMORYCLERK_XE」所指派的記憶體逐漸增加。以下是示範行為的範例 XEvent 會話:
CREATE EVENT SESSION[MyDiagnosticSession]ON SERVERADD EVENT sqlserver.module_end( ACTION (sqlserver.client_app_name,sqlserver.plan_handle,sqlserver.session_id,sqlserver.sql_text) WHERE ([package0].[Greater_than_equal_unicode_string]([sqlserver].[client_app_name],'MyApplication1') AND[package0].[Less_than_equal_unicode_string]([sqlserver].[client_app_name],'Myapplication2')))
注意: 您可以透過使用下列查詢或執行 DBCC MEMORYSTATUS,來監視這個記憶體洩漏:
select [Memory Used KB] = page_size_in_bytes /1024 from sys.dm_os_memory_clerks where type = 'MEMORYCLERK_XE'
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2012 SP2 累積更新2 /en-us/help/2983175
SQL Server 2012 SP1 累積更新11 /en-us/help/2975396
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。