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

Rod*_*ney 1 profiler stored-procedures azure-sql-database

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

在本地运行 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 安装了 Glimpse 并检查 SQL 选项卡(我正在运行 DotNetNuke 站点,并且代码没有使用正确的接口,因此这没有显示正在执行的 SQL Server 存储过程)

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

  2. Azure“管理数据库”-这显示最慢的查询并且非常有用,但不是当前传入的存储过程 http://blogs.msdn.com/b/benko/archive/2012/05/19/cloudtip-14-how -do-i-get-sql-profiler-info-from-sql-azure.aspx

我的最后手段是在本地复制整个站点和数据库并进行设置,但这似乎是一个简单的要求......

Luk*_*ett 5

您可以运行一个查询来获取针对 Windows Azure SQL 数据库运行的最后 500 个查询,如下所示:

\n\n
SELECT\xc2\xa0TOP\xc2\xa0500\xc2\xa0*\xc2\xa0\nFROM\n(\n    SELECT\xc2\xa0 [Last Execution Time] = last_execution_time,\n            [Execution Count] = execution_count,\n    [SQL Statement] = (\n                    SELECT\xc2\xa0TOP\xc2\xa01\xc2\xa0SUBSTRING\xc2\xa0(s2.\xc2\xa0TEXT,statement_start_offset\xc2\xa0/\xc2\xa02+\xc2\xa01\xc2\xa0,\n    (\xc2\xa0(\xc2\xa0CASE\xc2\xa0WHEN\xc2\xa0statement_end_offset\xc2\xa0=\xc2\xa0-1\n    THEN\xc2\xa0(\xc2\xa0LEN(CONVERT\xc2\xa0(NVARCHAR(\xc2\xa0MAX),s2\xc2\xa0.TEXT))\xc2\xa0*\xc2\xa02\xc2\xa0)\n                    ELSE\xc2\xa0statement_end_offset\xc2\xa0END\xc2\xa0)-\xc2\xa0statement_start_offset)\xc2\xa0/\xc2\xa02\xc2\xa0+1)\n                    ),\n            [Stored Procedure Name] = COALESCE(\xc2\xa0OBJECT_NAME(s2\xc2\xa0.objectid),\xc2\xa0'Ad-Hoc Query'),\n            [Last Elapsed Time] = s1.last_elapsed_time,\n            [Minimum Elapsed Time] = s1.min_elapsed_time,\n            [Maximum Elapsed Time] = s1.max_elapsed_time\n    FROM\xc2\xa0sys.dm_exec_query_stats\xc2\xa0AS\xc2\xa0s1\n    CROSS\xc2\xa0APPLY\xc2\xa0sys.dm_exec_sql_text(sql_handle)\xc2\xa0AS\xc2\xa0s2\xc2\xa0\n)\xc2\xa0x\nWHERE\xc2\xa0[SQL Statement]\xc2\xa0NOT\xc2\xa0LIKE\xc2\xa0'%SELECT TOP 500%' /* Exclude this query */\nORDER\xc2\xa0BY\xc2\xa0[Last Execution Time]\xc2\xa0DESC\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n