2014-10-28 59 views
1

我已將網站移至SQL Azure和Azure網站。某些存儲過程從UI中超時出現性能問題。我需要捕獲具有參數的確切的 SQL調用,並在查詢窗口中執行此操作來診斷問題。如何判斷在SQL Azure上使用參數執行哪些存儲過程

在本地運行SQL時,我只需運行SQL Profiler並捕獲SQL流量。在SQL Azure中,我無法做到這一點。

我曾嘗試以下失敗:

  1. 運行查詢的DMV:

    http://www.developer.com/services/how-to-identify-performance-bottlenecks-on-azure-sql-database.html http://programming4.us/database/2716.aspx http://sqlserverperformance.wordpress.com/2008/01/21/five-dmv-queries-that-will-make-you-a-superhero/

    (這說明我表現最差的查詢,但沒有確切的存儲當我碰到前端時觸發通話)

2安裝掠影並檢查SQL選項卡(我正在運行的DotNetNuke站點和代碼不使用正確的接口,所以這並沒有顯示正在執行的SQL Server存儲過程)

  • 提琴手

  • 天青(無SQL當然在HTTP調用信息)’ - 這顯示了最慢的查詢,是真正有用的,但不是當前入方向帶存儲過程 http://blogs.msdn.com/b/benko/archive/2012/05/19/cloudtip-14-how-do-i-get-sql-profiler-info-from-sql-azure.aspx

  • 我的最後一招是整個網站和數據庫的本地複製,並設置它,但它似乎是這樣一個簡單的要求...

    +0

    相關https://stackoverflow.com/questions/1929586/sql-azure-profiling – 2018-02-22 19:57:10

    回答

    2

    有一個查詢可以運行,以獲得最後的500個查詢運行鍼對Windows Azure SQL數據庫,請參閱以下內容:

    SELECT TOP 500 *  
    FROM 
    (
        SELECT  [Last Execution Time] = last_execution_time, 
          [Execution Count] = execution_count, 
        [SQL Statement] = (
            SELECT TOP 1 SUBSTRING (s2. TEXT,statement_start_offset / 2+ 1 , 
        ( ( CASE WHEN statement_end_offset = -1 
        THEN ( LEN(CONVERT (NVARCHAR( MAX),s2 .TEXT)) * 2 ) 
            ELSE statement_end_offset END )- statement_start_offset) / 2 +1) 
            ), 
          [Stored Procedure Name] = COALESCE( OBJECT_NAME(s2 .objectid), 'Ad-Hoc Query'), 
          [Last Elapsed Time] = s1.last_elapsed_time, 
          [Minimum Elapsed Time] = s1.min_elapsed_time, 
          [Maximum Elapsed Time] = s1.max_elapsed_time 
        FROM sys.dm_exec_query_stats AS s1 
        CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2  
    ) x 
    WHERE [SQL Statement] NOT LIKE '%SELECT TOP 500%' /* Exclude this query */ 
    ORDER BY [Last Execution Time] DESC 
    

    這是否爲您提供了需要查看的參數?

    相關問題