Symptômes

Considérez le scénario suivant :

  • Vous créez une session XEvent a un événement sqlos.wait_info dans Microsoft SQL Server.

  • Dans cette session, vous définissez un filtre (prédicat) dans le modèle suivant :

    [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%<Query Text>')

Dans ce scénario, vous pouvez rencontrer l’un des problèmes suivants :

  • SQL Server génère des violations d’accès ou d’un fichier de vidage de mémoire de débordement de la pile.

  • SQL Server génère un fichier de vidage de mémoire du planificateur dalle.

  • Les requêtes ne renvoyant pas de résultats, ou vous ne pouvez annuler ou supprimer une requête.

  • Lorsque SQL Server génère une exception d’erreur EXCEPTION_ACCESS_VIOLATION et le fichier de vidage de mémoire de dépassement de capacité de pile dans le Journal des erreurs SQL Server, les messages d’erreur semblables à un des messages suivants sont générés :

    < heure > spid52 *
    < heure > spid52 * début DUMP de la pile :
    spid52 de < heure > * < heure > spid 52
    < heure > spid52 *
    < heure > spid52 *
    < heure > spid52 * adresse d’Exception = 00007FFA414ED763 Module(sqlmin+000000000000D763)
    < heure > spid52 * Code d’Exception = c0000005 EXCEPTION_ACCESS_VIOLATION
    < heure > spid52 * Violation d’accès s’est produite lors de la rédaction, adresse 0000000000000008

    < heure > spid55 Impossible de créer le fichier de vidage de pile en raison d’une insuffisance de la pile (emplacement : scheduler.cpp:2090
    Expression : ! pWorker -> WorkerQueueElem::IsInList ()
    SPID : 55
    ID de processus : 8548)
    Signature de pile < heure > spid55 pour le vidage est 0 x 0000000000000000
    < heure > spid55 < heure > débordement de vidage de pile impossible - Exception des EXCEPTION_STACK_OVERFLOW de c00000fd à 0x00007FFA4EF85F35
    < heure > spid55 SqlDumpExceptionHandler : adresse = 0x00007FFA4EF85F35 Code d’Exception = c00000fd
    < heure > spid55 Rax = 000000000000044c Rbx = Rcx 0000000002612320 = Rdx 0000000002612050 = 00000000662baf59
    Rsi de spid55 < heure > = 000000004b04f848 Rdi = 000000004b000270 Rip = 000000004ef85f35 Rsp = 0000000002611fd0
    < heure > spid55 Rbp = EFlags 0000000000000000 = 0000000000010202
    < heure > spid55 cs = 0000000000000033 ss = 000000000000002b ds = 000000000000002b
    es=000000000000002b fs=0000000000000053 gs=000000000000002b
    < heure > spid55 1 : 00007FFA4EF85F35 adresse de retour de cadre 0000000000000000

Solution de contournement

Pour contourner ce problème, évitez d’utiliser des conditions de filtre complexe avec l’événement wait_info . C’est parce que l’événement wait_info consomme beaucoup de ressources et peut ralentir considérablement la requête.

Si vous souhaitez effectuer le suivi de <Texte de la requête> dans ce cas, modifier le modèle de prédicat de filtre pour les éléments suivants :

([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[sql_text],N'<Query Text>').

Besoin d’aide ?

Développez vos compétences

Découvrez des formations >

Accédez aux nouvelles fonctionnalités en avant-première

Rejoindre Microsoft Insider >

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?

Nous vous remercions de vos commentaires.

×