2012-04-30 75 views
7

在我的MS SQL Profiler中,我看到很多這些小的查詢。查看sp_execute在做什麼

EXEC sp_execute 1,@ P0 = 15954

我知道這個工作的,從理論上講,這是執行先前創建的查詢,並傳遞一個特定的參數。但問題是我不確定導致這些查詢的原因。

有沒有辦法查看這些查詢的TSQL內容?

+1

您當前正在捕獲哪些事件?如果您爲跟蹤使用模板,哪個模板以及是否修改了事件或列? –

回答

8

這看起來像它的運行準備好的查詢。要做的一件事就是查看剖析器跟蹤來查看是否可以找到生成此特定句柄的sp_prepare查詢。

另一種選擇是查詢系統視圖來查找底層文本。

這會給你的查詢,如果它當前正在運行

select text 
    from sys.dm_exec_requests 
    cross apply sys.dm_exec_sql_text(plan_handle) 
    where session_id = <SPID FROM PROFILER> 
+1

通過編輯跟蹤的屬性,我可以看到sp_prepare語句,這對我有很大的幫助。 – Tys

+1

我也使用了SQL Server Profiler。對我來說,我在Trace屬性的'Stored Procedure'部分檢查了SP:StmtStarting,然後運行了跟蹤,我可以在頻繁的sp_execute調用下看到TSQL。 – Baodad

-3

SQL Server 7.0和更高版本中的答案是「只打開SQL Profiler中的跟蹤」。

也許你有SQL事件探查器。如果是這樣 - 使用它。

或者您可能擁有較新版本的MSSQL Express(不再捆綁SQL Profiler)。如果是的話,試試這個:

+5

OP在問題中說明他們在Profiler中看到了這一點。 –

8

在SQL事件探查器我用事件的StoredProcedure >> SP:CacheHit。我在link中瞭解它。 捕獲SQL:StmtCompleted和RPC:已完成DIDNT捕獲sp_execute的參數

+0

RPC:啓動和SP:CacheHit在一起很棒,因爲你將得到傳入的參數,並且在主查詢中Cachehit中很好地聲明瞭參數。喜歡它! – Joey

+0

幫助我,謝謝你們! –