Symptomy
Załóżmy, że tworzysz sesję systemu XEvent z predykatami w programie Microsoft SQL Server 2012. Po wielokrotnym uruchomieniu i zatrzymaniu sesji systemu XEvent następuje przeciek pamięci, co oznacza, że pamięć przydzielona przez "MEMORYCLERK_XE" wzrasta stopniowo. Oto przykładowa sesja systemu XEvent, która przedstawia zachowanie:
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')))
Uwaga Ten przeciek pamięci można monitorować, korzystając z poniższej kwerendy lub wykonując polecenie DBCC MEMORYSTATUS:
select [Memory Used KB] = page_size_in_bytes /1024 from sys.dm_os_memory_clerks where type = 'MEMORYCLERK_XE'
Rozwiązanie
Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 2 dla programu SQL Server 2012 z dodatkiem SP2 /en-us/help/2983175
Zbiorcza aktualizacja 11 dla programu SQL Server 2012 z dodatkiem SP1 /en-us/help/2975396
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".