Sql-Server

如何查看傳遞給 Azure 上儲存過程的參數?

  • April 25, 2015

我正在使用的查詢:

SELECT 
   deqs.execution_count,
   deqs.last_execution_time,
   dest.objectid,  
   SUBSTRING(dest.[text], (deqs.statement_start_offset/2)+1,
                       ((CASE deqs.statement_end_offset WHEN -1 THEN DATALENGTH(dest.text)
                             ELSE deqs.statement_end_offset
                           END - deqs.statement_start_offset)/2)+1) AS statementtext 
   , dest.[text]   
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where dest.[text] like '%foo%' 
order by deqs.last_execution_time DESC

這給了我 10 次點擊,但不幸的是,我看不到傳入了哪些參數。在正常 SQL 領域,我只需附加分析器,但這不是一個選項。這個關於 SO 的答案讓我認為這是不可能的,這很難相信——看到 proc 參數是一個重要的調試工具。

如何查看最後執行的幾個 proc,以及它們在 Azure 上的參數?

今天,我認為您必須將日誌記錄添加到儲存過程(或呼叫應用程序)。Azure SQL 數據庫不支持跟踪/探查器,以後也不會支持。

在將來的某個時候,您應該能夠使用數據庫範圍的擴展事件會話。Bob Beauchemin在這里這裡談到了這一點,這裡有微軟的 Tiffany Wissner的官方行銷聲明(但沒有任何技術性):

如果您有一個 Azure 數據庫,並且您恰好使用的是最新的公共版本(據我所知是 13.0.15),您可以開始看到她關於擴展事件的陳述的一些證據。例如,我有一個上下文菜單項,我還不能做任何事情:

Azure SQL 數據庫中的擴展事件提示

所以,它來了,只是還沒有。在那之前,除非您更改應用程序以檢索實際的執行後計劃並在某處記錄 XML 輸出,否則我真的想不出一種體面的方法來獲取被呼叫過程的執行時參數值。如果您要這樣做,那麼您也可以添加實際值的日誌記錄 - 更容易使用。

當然,隨著年齡的增長,這個答案可能會發生變化。

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