Sql-Server

為什麼 SQL Server Profiler 會成對(兩次)顯示一些已完成的語句?

  • December 9, 2020

在 SQL Server 探查器中,我看到成對的完整語句。一對如下所示。TextData(查詢)完全相同。SPID 不同(86 和 88)。讀取和寫入的 # 略有不同。(作為一個僅供參考,我正在執行一個自定義模板,我在其中過濾掉 exec sp_reset_connection 語句並僅顯示已完成的語句)。我看到一堆這樣的 SQL:StmtCompleted 和 RPC:Completed 對,每一對都在 TextData 中包含相同的 SQL。

顯示的語句由客戶端中的實體框架執行一次。

我的問題:SQL Server 是否實際上執行了兩次查詢?如果是,這是否意味著客戶端肯定發送了兩次查詢?

在此處輸入圖像描述

我的問題:SQL Server 是否實際上執行了兩次查詢?

是的!鑑於 SPID 不同,這意味著它們是從完全不同的連接執行的。正如您所提到的,持續時間和讀取次數不同的事實也很好地表明查詢執行了兩次(可能使用不同的參數)。

如果是,這是否意味著客戶端肯定發送了兩次查詢?

我會說是的。您應該查看您的應用程式碼。可能不止一個使用者同時訪問系統,或者查詢正在從多個執行緒執行,或者其他什麼。

由於這是 EF,我可能認為這是N+1 查詢問題(披露:那是我的部落格),但這通常都在同一個 SPID 上。

我已經看到這種情況發生在編寫的應用程序中Access:基本上同一個客戶端兩次觸發了相同的查詢。

一個是Microsoft Office,另一個是Microsoft Office 2013,我的假設是開發人員避免了任何類型的兼容性問題,執行兩次查詢,然後將數據傳遞給使用者應用程序,無論使用者是否已安裝,Microsoft Office或者 Microsoft Office 2013以某種方式,結果將是那裡。

我看到您正在使用.Net某些應用程序。與編寫應用程序的開發團隊討論這個問題

引用自:https://dba.stackexchange.com/questions/281134