Συμπτώματα
Ας υποθέσουμε ότι δημιουργείτε μια περίοδο λειτουργίας XEvent που περιλαμβάνει τα κατηγόρημα στον Microsoft SQL Server 2012. Όταν ξεκινάτε και διακόπτετε επανειλημμένα την περίοδο λειτουργίας του 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.
Αθροιστική ενημερωμένη έκδοση 2 για τον SQL Server 2012 SP2 /en-us/help/2983175
Αθροιστική ενημερωμένη έκδοση 11 για τον SQL Server 2012 SP1 /en-us/help/2975396
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".