Zik*_*ato 6 sql-server smo query-store sql-server-2019
可以在模型数据库上启用查询存储,并确保每个新数据库都具有与模型数据库相同的设置。
缺少 GUI 选项
但可以使用 TSQL 启用它
ALTER DATABASE model
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);
Run Code Online (Sandbox Code Playgroud)
由于没有 GUI,我无法检查那里的默认设置。
再次使用TSQL
USE model;
select * from sys.database_query_store_options;
Run Code Online (Sandbox Code Playgroud)
返回空结果
当我创建一个新数据库(使用模型作为模板并查询设置时,它会显示结果)
create database TestQs;
go
use TestQs;
select * from sys.database_query_store_options;
Run Code Online (Sandbox Code Playgroud)
此外,设置必须保存在某处,因为当我更改查询存储选项时,更改会传播到新数据库
ALTER DATABASE model
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 22);
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 SMO 来找到这些选项,但没有成功。
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['TestQs'].QueryStoreOptions
Run Code Online (Sandbox Code Playgroud)
但对模型数据库进行相同的查询不会产生任何结果
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'localhost'
$sqlServer.Databases['model'].QueryStoreOptions
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以检查模型数据库上的查询存储设置,而无需创建新数据库并在那里进行检查?
有没有一种方法可以检查模型数据库上的查询存储设置,而无需创建新数据库并在那里进行检查?
没有任何支持,不。例如,不应在系统数据库上启用 QDS,工作负载不应在主数据库或模型中运行。我理解这里的观点,即它有助于自动化,尽管我个人不喜欢将事物放入模型(或就此而言的主控)中,并且不会使用该方法,而是使用编程方法,以便配置漂移不会在创建时不会发生(根据变量的不同,创建后可能会发生持续漂移)。尽管如此,我还是了解你的用例和观点。
这对我来说似乎是一个错误。[...] - 埃里克·达林
您没有得到任何返回的原因是因为不应在系统数据库上启用 QDS,因此不会返回任何行集。这不是一个错误,它是这样实现的。
如果您确实希望它起作用,您可以编辑二进制文件以禁用检查,或使用调试器进行热补丁,但我不会调用这些支持的选项。