存取違規和記憶體傾印檔案時使用 sqlos.wait_info 事件,在 SQL Server 中的 XEvent 工作階段

狀況

請考慮下列情況:

  • 您建立已在 Microsoft SQL Server 中的sqlos.wait_info事件XEvent工作階段。

  • 在此階段,您可以定義下列模式中的篩選器 (述詞):

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

在這個案例中,您可能會遇到下列問題:

  • SQL Server 會產生存取違規或堆疊溢位的記憶體傾印檔案。

  • SQL Server 會產生非傳送排程器記憶體傾印檔案。

  • 查詢不傳回結果,或您不能取消或刪除查詢。

  • 當 SQL Server 產生的EXCEPTION_ACCESS_VIOLATION例外狀況和堆疊溢位記憶體傾印檔案在SQL Server 錯誤記錄檔中的時,會產生類似下列訊息之一的錯誤訊息:

    < 時間戳記 > spid52 *
    < 時間戳記 > spid52 * 開始堆疊傾印:
    < 時間戳記 > spid52 * < 時間戳記 > spid 52
    < 時間戳記 > spid52 *
    < 時間戳記 > spid52 *
    < 時間戳記 > spid52 * 例外狀況位址 = 00007FFA414ED763 Module(sqlmin+000000000000D763)
    < 時間戳記 > spid52 * 例外狀況代碼 = c0000005 EXCEPTION_ACCESS_VIOLATION
    < 時間戳記 > spid52 * 發生存取違規的書寫地址 0000000000000008

    < 時間戳記 > spid55 無法建立堆疊傾印檔案,因為堆疊不足 (位置: scheduler.cpp:2090
    運算式: ! pWorker-> WorkerQueueElem::IsInList ()
    SPID: 55
    處理程序識別碼: 8548)
    傾印的 < 時間戳記 > spid55 堆疊簽章是 0x0000000000000000
    < 時間戳記 > spid55 < 時間戳記 > 堆疊溢位傾印不可能的例外狀況在 0x00007FFA4EF85F35 的 c00000fd EXCEPTION_STACK_OVERFLOW
    < 時間戳記 > spid55 SqlDumpExceptionHandler: 位址 = 0x00007FFA4EF85F35 例外狀況代碼 = c00000fd
    < 時間戳記 > spid55 Rax = 000000000000044 c Rbx = 0000000002612320 Rcx = 0000000002612050 的 Rdx = 00000000662baf59
    < 時間戳記 > spid55 Rsi = 000000004b04f848 Rdi = 000000004b000270 Rip = 000000004ef85f35 Rsp = 0000000002611fd0
    < 時間戳記 > spid55 Rbp = 0000000000000000 的 EFlags = 0000000000010202
    < 時間戳記 > spid55 cs = 0000000000000033 ss = 000000000000002b ds = 000000000000002b
    es=000000000000002b fs=0000000000000053 gs=000000000000002b
    < 時間戳記 > spid55 1: 框架 0000000000000000 傳回位址 00007FFA4EF85F35

因應措施

若要解決這個問題,請避免使用複雜的篩選條件,以及wait_info事件。這是因為wait_info事件是大量的資源,可以大幅降低查詢速度。

如果您想要追蹤 <查詢文字> 在此情況下,將變更的篩選器述詞的模式如下:

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

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×