我现在做了几次都不成功。在 UI 中,我能够成功地将 Query Store Retention 设置中的查询存储大小从 250 提升到 1000 mb。我进行了更改,关闭数据库属性窗口,重新打开,看起来更改成功,显示 1000 mb。然后当我再次查看它时(可能是第二天左右),它又恢复到 250 mb。
版本为 Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4。
这里会发生什么?
我现在做了几次都不成功。在 UI 中,我能够成功地将 Query Store Retention 设置中的查询存储大小从 250 提升到 1000 mb。我进行了更改,关闭数据库属性窗口,重新打开,看起来更改成功,显示 1000 mb。然后当我再次查看它时(可能是第二天左右),它又恢复到 250 mb。
版本为 Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4。
这里会发生什么?
该设置不应自行更改。
您可以通过设置像这样的扩展事件会话来查看谁或什么在更改它,以及何时更改它:
您需要将“QDSTest”替换为您感兴趣的数据库名称。
有了这个,您应该能够找到与发出
ALTER TABLE
更改查询存储设置的语句的会话相关联的用户名,这有望有助于追踪谁或什么正在改变它。一种可能性是您使用基于模型的方法(如 SQL Server Data Tools dacpac 部署)对此数据库进行了自动部署。如果“模型”以某种方式配置了查询存储,则每个部署都会尝试将设置更改回模型中的设置。
触发器
一种替代方法是创建一个触发器来捕获和记录数据,然后在您注意到更改后查看数据。
首先,你需要一张桌子:
接下来,您需要一个触发器:
还有一个测试日志记录的命令:
用于查看日志表的查询:
以下是在命令上运行一些变体后我在本地得到的结果:
我同意 Josh Darnell 的观点,即您应该设置一个扩展的活动会话,但我推荐一个更具体的活动。我最近使用它来对查询存储进行故障排除。
这是我使用 GUI 进行更改时得到的输出