AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 263998
Accepted
MHeld
MHeld
Asked: 2020-04-01 08:08:28 +0800 CST2020-04-01 08:08:28 +0800 CST 2020-04-01 08:08:28 +0800 CST

在查询存储中查找特定查询

  • 772

我在数据库上启用了查询存储。我有一个要跟踪的特定查询。我有很多关于 sp_BlitzCache 查询的详细信息(如 SQL 文本、SQL 句柄、SQL 哈希、计划缓存句柄/哈希等)。

我可以使用 sp_BlitzCache 中的信息搜索查询存储以追踪那里的查询吗?我想强制执行特定的执行计划,因为查询遇到参数嗅探问题。

sql-server-2016 query-store
  • 2 2 个回答
  • 8256 Views

2 个回答

  • Voted
  1. Best Answer
    Josh Darnell
    2020-04-01T10:55:38+08:002020-04-01T10:55:38+08:00

    一种方法是直接查询查询存储视图以获取您从计划缓存中获得的信息:

    SELECT 
        qsq.query_id,
        qsq.last_execution_time,
        qsqt.query_sql_text
    FROM sys.query_store_query qsq
        INNER JOIN sys.query_store_query_text qsqt
            ON qsq.query_text_id = qsqt.query_text_id
    WHERE
        qsqt.query_sql_text LIKE '%your query text%';
    

    该sys.query_store_query表还有一些其他字段(query_hash、last_compile_batch_sql_handle、statement_sql_handle等),它们可能会更可靠地找到您要查找的查询。

    基本上,这样做的目的是在查询存储中找到“查询 ID”,因为您需要它来找到它的计划并强制执行。

    拿到query_id手后,您可以转到 SSMS 中的 UI 并使用“Tracked Queries”节点查找查询:

    跟踪查询选项卡和文本框的屏幕截图

    从那里您可以单击所需的计划,然后单击“强制计划”以强制执行:

    部队计划按钮截图

    • 10
  2. Peter Vandivier
    2020-04-01T11:37:07+08:002020-04-01T11:37:07+08:00

    UI 超级不友好,但您也可以直接从“ Tracked Queries”仪表板搜索查询文本。鉴于我的垃圾数据库中只有 2 个系统查询...

    select 
        query_text_id, 
        left(query_sql_text,50) as query_sql_text 
    from sys.query_store_query_text
    

    ...显示...

    +---------------+----------------------------------------------------+
    | query_text_id | query_sql_text                                     |
    +---------------+----------------------------------------------------+
    | 1             | (@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4 |
    | 2             | SELECT db.name as HasMemoryOptimizedObjects from m |
    +---------------+----------------------------------------------------+
    

    ..我可以点击“追踪查询”搜索框中的“放大镜?”图标...

    跟踪查询输入栏上的放大镜图标

    这将弹出以下输入表单...

    查询文本搜索输入表单。 一个红色框包围了搜索字段。 蓝色框包含放大镜图标。

    如果您在搜索栏(屏幕截图中红色框内)输入您要搜索的查询测试,然后按回车或单击放大镜图标(蓝色框内),您可以浏览查询 ID、查询文本 ID 和查询来自内置 UI 的文本(虽然它可能不友好,但它可能难以访问)。

    例如,您可以在下面的屏幕截图中看到我搜索了字母“a”并返回了两个查询......

    在输入表单中搜索字母“a”

    ...而在下一个屏幕截图中,我搜索了更具选择性的字符串“HasMemoryOptimizedObjects”,它只返回匹配的查询文本

    在输入表单中搜索字符串“HasMemoryOptimizedObjects”

    • 8

相关问题

  • 消息 39011 SQL Server 无法与 LaunchPad 服务通信

  • Where 子句过滤 Azure Stretch 数据库的行?

  • SQL Server 2016 标准版中是否会包含临时表?

  • 无法在 Windows 10 上启动 SQL Server 2016 CTP3 服务

  • SQL Server 2016 中具有规范化架构的行级安全性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve