logging - 如何查看在 Azure 上托管的数据库上执行的查询历史记录(全部或长期)?

标签 logging azure indexing azure-sql-database database-tuning

对于 Azure 上托管的数据库,我可以查看对其执行的查询的最新历史记录。这是通过Azure 门户 > 数据库 > 管理 > 管理 > 查询性能实现的。

不幸的是,那里发现的历史记录只涵盖了很短的时间范围(几分钟)。我打算在数据库上创建非聚集索引,为此,需要获取典型一天(而不是过去几分钟)对数据运行的实际查询的日志。

目前,我必须多次刷新页面并记录每次刷新的所有查询,即使如此,我在这个艰巨的过程之后获得的日志也仅反射(reflect)了所执行查询的一小部分。是否有任何选项可以查看更长时间的历史记录?

谢谢。

最佳答案

我发现以下查询对于查看 Azure SQL Server 数据库上执行次数最多的查询很有用:

SELECT TOP 10 execution_count, statement_text
FROM (
    SELECT QS.*,
    SUBSTRING(
        ST.text,
        (QS.statement_start_offset/2) + 1,
        ((
            CASE statement_end_offset
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE QS.statement_end_offset END
            - QS.statement_start_offset
        ) /2) 
        + 1
    ) AS statement_text
    FROM sys.dm_exec_query_stats AS QS
    CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST
) AS query_stats
WHERE statement_text LIKE 'UPDATE%'
ORDER BY execution_count DESC

来源:March Madness - SQL Azure - sys.dm_exec_query_plan | SQLRockstar | Thomas LaRock

关于logging - 如何查看在 Azure 上托管的数据库上执行的查询历史记录(全部或长期)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17920968/

相关文章:

sqlite - 有状态服务结构服务 - 复制磁盘中更改的文件

php - 如何获取 php 数组中的前 3 个值及其索引

indexing - MariaDB 中的索引键大小限制是多少?

c++ - 记录多线程服务器组件

ruby-on-rails - 在Rails中记录默认路由的使用

logging - Spring Boot 中的 Liquibase 日志记录级别

random - 从 Google 表格列表中选择随机单元格的简单方法

java - 如何在Eclipse Scout框架中设置不同的日志级别?

powershell - 如何获取应用服务的 Azure MSI 引用?

c# - Visual Studio 在哪里存储发布配置文件?