2014-10-28 48 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 
    

    这是否为您提供了需要查看的参数?

    相关问题