Stored procedures 如何判断哪些存储过程正在SQL Azure上使用参数执行

Stored procedures 如何判断哪些存储过程正在SQL Azure上使用参数执行,stored-procedures,azure-sql-database,profiler,Stored Procedures,Azure Sql Database,Profiler,我已将我的网站移至SQL Azure和Azure网站。我对某些从UI超时的存储过程存在性能问题。我需要捕获带有参数的精确的SQL调用,并在查询窗口中执行该调用以诊断问题 在本地运行SQL时,我只需运行SQL分析器并捕获SQL流量。在SQLAzure中,我不能这样做 我尝试了以下方法,但没有成功: 正在运行DMV的查询: (这向我展示了性能最差的查询,但没有显示在我点击前端时的确切存储过程调用) 2.安装并检查SQL选项卡(我正在运行DotNetNuke站点,代码没有使用正确的界面,因此这没有

我已将我的网站移至SQL Azure和Azure网站。我对某些从UI超时的存储过程存在性能问题。我需要捕获带有参数的精确的SQL调用,并在查询窗口中执行该调用以诊断问题

在本地运行SQL时,我只需运行SQL分析器并捕获SQL流量。在SQLAzure中,我不能这样做

我尝试了以下方法,但没有成功:

  • 正在运行DMV的查询:

    (这向我展示了性能最差的查询,但没有显示在我点击前端时的确切存储过程调用)

  • 2.安装并检查SQL选项卡(我正在运行DotNetNuke站点,代码没有使用正确的界面,因此这没有显示正在执行的SQL Server存储过程)

  • Fiddler(当然HTTP调用中没有SQL信息)

  • Azure“管理数据库”-这显示了最慢的查询,非常有用,但不是当前传入的存储过程


  • 我最后的办法是在本地复制整个网站和数据库并进行设置,但这似乎是一个简单的要求…

    您可以运行一个查询,以获得针对Windows Azure SQL数据库运行的最后500个查询,请参见以下内容:

    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
    

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

    您可以运行一个查询,以获取针对Windows Azure SQL数据库运行的最后500个查询,请参见以下内容:

    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
    
    这是否为您提供了需要查看的参数?

    相关