可以在模型数据库上启用查询存储,并确保每个新数据库都具有与模型数据库相同的设置。
缺少 GUI 选项
但可以使用 TSQL 启用它
ALTER DATABASE model
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);
由于没有 GUI,我无法检查那里的默认设置。
再次使用 TSQL
USE model;
select * from sys.database_query_store_options;
返回空结果
当我创建一个新数据库时(使用模型作为模板并查询设置,它会显示结果)
create database TestQs;
go
use TestQs;
select * from sys.database_query_store_options;
此外,设置必须保存在某处,因为当我更改查询存储选项时,更改会传播到新数据库
ALTER DATABASE model
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 22);
我尝试使用 SMO 找到这些选项,但没有运气。
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['TestQs'].QueryStoreOptions
但是对模型数据库的相同查询没有产生任何结果
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['model'].QueryStoreOptions
有没有办法在不创建新数据库并在那里检查的情况下检查模型数据库上的查询存储设置?
不支持,不支持。不应在系统数据库上启用 QDS,例如,工作负载不应在主数据库或模型中运行。我理解这里的观点,它有助于自动化,尽管我不是将事物放入模型(或大师)的个人粉丝,并且不会使用这种方法,而是使用编程方法,以便配置漂移不会'不会在创建时发生(根据变量,创建后可能会发生持续漂移)。不过,我明白你的用例和观点。
您没有得到任何回报的原因是因为不应在系统数据库上启用 QDS,因此不会返回任何行集。这不是一个错误,它是这样实现的。
如果你真的想让它工作,你可以编辑二进制文件以禁用检查,或者使用调试器进行热补丁,但我不会调用那些支持的选项。