MSSQL在单个数据库级别配置参数(ALTER DATABASE SCOPED CONFIGURATION)

0    226    1

Tags:

👉 本文共约18610个字,系统预计阅读时间或需70分钟。

目录

简介

此命令在单个数据库级别启用多个数据库配置设置。

重要

SQL Server或 Azure 服务的不同版本支持不同的 DATABASE SCOPED CONFIGURATION 选项。 本页介绍所有 DATABASE SCOPED CONFIGURATION 选项。 以下文本介绍了适用的版本。 确保使用你正在使用的服务版本中可用的语法。

Azure SQL 数据库、Azure SQL 托管实例和 SQL Server 中支持以下设置,如参数部分中每个设置的“适用范围”行所示:

  • 清除过程缓存。
  • 根据最适合特定工作负载的情况,将 MAXDOP 参数设置为主数据库的推荐值(1、2、…),并为报告查询使用的次要副本数据库设置不同的值。 有关如何选择 MAXDOP 的指导,请查看配置最大并行度服务器配置选项
  • 设置独立于数据库兼容级别的查询优化器基数估计模型。
  • 在数据库级别启用或禁用参数探查。
  • 在数据库级别启用或禁用查询优化修补程序。
  • 在数据库级别启用或禁用标识缓存。
  • 在第一次编译批处理时启用或禁用要存储在缓存中的已编译计划存根。
  • 启用或禁用对本机编译的 Transact-SQL 模块的执行统计信息收集。
  • 为支持 ONLINE = 语法的 DDL 语句启用或禁用默认联机选项。
  • 为支持 RESUMABLE = 语法的 DDL 语句启用或禁用默认可恢复选项。
  • 启用或禁用智能查询处理功能。
  • 启用或禁用加速计划强制实施。
  • 启用或禁用全局临时表的自动删除功能。
  • 启用或禁用轻型查询分析基础结构
  • 启用或禁用新的 String or binary data would be truncated 错误消息。
  • sys.dm_exec_query_plan_stats 中启用或禁用最后一个实际执行计划的收集。
  • 指定暂停的可恢复索引操作在被 数据库引擎 自动中止之前暂停的分钟数。
  • 允许或禁止等待低优先级的锁以完成异步统计信息更新。
  • 启用或禁用将账本摘要上传到 Azure Blob 存储。

此设置仅在 Azure Synapse Analytics 中可用。

  • 设置用户数据库的兼容性级别

语法

syntaxsql复制

重要

从 SQL Server 2019 (15.x) 开始,在 Azure SQL 数据库 和 Azure SQL 托管实例 中,某些选项名称已更改:

  • DISABLE_INTERLEAVED_EXECUTION_TVF 更改为 INTERLEAVED_EXECUTION_TVF
  • DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK 更改为 BATCH_MODE_MEMORY_GRANT_FEEDBACK
  • DISABLE_BATCH_MODE_ADAPTIVE_JOINS 更改为 BATCH_MODE_ADAPTIVE_JOINS

syntaxsql复制

参数

FOR SECONDARY

指定辅助数据库的设置(所有辅助数据库必须具有相同的值)。

CLEAR PROCEDURE_CACHE [plan_handle]

清除数据库的过程(计划)缓存,可同时对主要和辅助数据库执行此操作。

指定查询计划句柄,以从计划缓存中清除单个查询计划。

适用范围:从 SQL Server 2019 (15.x) 开始,在 Azure SQL 数据库和 Azure SQL 托管实例中,可以指定查询计划句柄。

MAXDOP = { | PRIMARY }

指定应用于该语句的默认最大并行度 (MAXDOP) 设置。 0 是默认值,表示将改用服务器配置。 数据库范围的 MAXDOP 会替代(除非设置为 0)通过 sp_configure 在服务器级别设置“max degree of parallelism”。 查询提示仍然可以替代数据库作用域内 MAXDOP,以调整需要不同设置的特定查询。 所有这些设置都受为工作负荷组设置的 MAXDOP 限制。

你可以使用 MAXDOP 选项来限制执行并行计划时所用的处理器数量。 SQL Server 考虑为查询、索引数据定义语言 (DDL) 操作、并行插入、联机更改列、并行统计信息集合以及静态的和由键集驱动的游标填充实施并行执行计划。

备注

将按任务设置最大并行度 (MAXDOP) 限制。 它不是按请求限制或按查询限制。 这意味着,在并行查询期间,单个请求可以生成多个任务,然后将它们分配给计划程序。 有关详细信息,请参阅线程和任务体系结构指南

要在实例级别设置此选项,请参阅配置 max degree of parallelism 服务器配置选项

备注

在 Azure SQL 数据库中,新的单一数据库和弹性池数据库的 MAXDOP 数据库范围的配置默认设置为 8。 可以为每个数据库配置 MAXDOP,如当前文章中所述。 有关最佳配置 MAXDOP 的建议,请参阅其他资源部分。

提示

要在查询级别完成此操作,请使用 MAXDOP 查询提示
要在服务器级别完成此操作,请使用“最大并行度 (MAXDOP)”服务器配置选项
要在工作负荷级别完成此操作,请使用 MAX_DOP Resource Governor 工作负荷组配置选项

PRIMARY

仅可为辅助数据库(该数据库位于主数据库上)设置,表示其配置是为主数据库设置的配置。 如果主数据库的配置更改,辅助数据库上的值也会相应地更改,不需要再显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。

LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY }

可用于独立于数据库兼容性级别将查询优化器基数估计模型设置为 SQL Server 2012 或更低版本。 默认值为 OFF,可根据数据库兼容性级别设置查询优化器基数估计模型。 将 LEGACY_CARDINALITY_ESTIMATION 设置为 ON 等效于启用跟踪标志 9481

提示

要在查询级别完成此操作,请添加 QUERYTRACEON 查询提示。 从 SQL Server 2016 (13.x) SP1 开始,要在查询级别完成此操作,请添加 USE HINT 查询提示,而不是使用跟踪标志。

PRIMARY

此值仅对辅助数据库(该数据库位于主数据库上)有效,指定所有辅助数据库上的查询优化器基数估计模型设置都是为主数据库设置的值。 如果主数据库上查询优化器基数估计模型的配置发生更改,则辅助数据上的值也会相应地更改。 PRIMARY 是辅助数据库的默认设置。

PARAMETER_SNIFFING = { ON | OFF | PRIMARY }

启用或禁用参数截取。 默认值为 ON。 将 PARAMETER_SNIFFING 设置为 OFF 等效于启用跟踪标志 4136

提示

要在查询级别完成此操作,请参阅 OPTIMIZE FOR UNKNOWN 查询提示。 从 SQL Server 2016 (13.x) SP1 开始,要在查询级别完成此操作,也可使用 USE HINT 查询提示

PRIMARY

此值仅对辅助数据库(该数据库位于主数据库上)有效,指定所有辅助数据库上此设置的值都是为主数据库设置的值。 如果主数据库上用于使用参数截取的配置更改,则辅助数据库上的值也会相应地更改,不需要再显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。

QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY }

启用或禁用查询优化修补程序,而无论数据库兼容性级别。 默认值为 OFF,可禁用在为特定版本 (post-RTM) 引入可用度最高的兼容性级别后发布的查询优化修补程序。 将此值设置为 ON 等效于启用跟踪标志 4199

适用范围:SQL Server(SQL Server 2016 (13.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

提示

要在查询级别完成此操作,请添加 QUERYTRACEON 查询提示。 从 SQL Server 2016 (13.x) SP1 开始,要在查询级别完成此操作,请添加 USE HINT 查询提示,而不是使用跟踪标志。

PRIMARY

此值仅对辅助数据库(该数据库位于主数据库上)有效,指定所有辅助数据库上此设置的值都是为主数据库设置的值。 如果主数据库的配置更改,辅助数据库上的值也会相应地更改,不需要再显式设置辅助数据库值。 PRIMARY 是辅助数据库的默认设置。

IDENTITY_CACHE = { ON | OFF }

适用范围:SQL Server(SQL Server 2017 (14.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

在数据库级别启用或禁用标识缓存。 默认值为 ON。 标识缓存用于提高具有标识列的表的 INSERT 性能。 为了避免服务器意外重启或故障转移到辅助服务器时出现标识列值的差值,请禁用 IDENTITY_CACHE 选项。 该选项与现有跟踪标志 272 类似,但前者可在数据库级别设置,而不只是可在服务器级别设置。

备注

仅可为 PRIMARY 设置此选项。 有关详细信息,请参阅标识列

INTERLEAVED_EXECUTION_TVF = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库或语句范围内启用或禁用多语句表值函数的交错执行,同时将数据库兼容性级别维持在 140 或更高。 默认值为 ON。 交错执行是 Azure SQL 数据库 中自适应查询处理的一个功能。 有关详细信息,请参阅智能查询处理

备注

对于数据库兼容性级别 130 或更低级别,此数据库范围配置无效。

仅在 SQL Server 2017 (14.x) 中,选项 INTERLEAVED_EXECUTION_TVF 具有旧名称 DISABLE_INTERLEAVED_EXECUTION_TVF。

BATCH_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库范围内启用或禁用批处理模式内存授予反馈,同时将数据库兼容级别维持在 140 或更高。 默认值为 ON。 SQL Server 2017 (14.x) 中引入的批处理模式内存授予反馈是智能查询处理功能套件的一部分。 有关详细信息,请参阅内存授予反馈

备注

对于数据库兼容性级别 130 或更低级别,此数据库范围配置无效。

BATCH_MODE_ADAPTIVE_JOINS = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库范围内启用或禁用批处理模式自适应联接,同时将数据库兼容性级别维持在 140 或更高。 默认值为 ON。 批处理模式自适应联接是 SQL Server 2017 (14.x) 中推出的智能查询处理的一个功能。

备注

对于数据库兼容性级别 130 或更低级别,此数据库范围配置无效。

TSQL_SCALAR_UDF_INLINING = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)和 Azure SQL 数据库(此功能为公开预览版)

允许用户在数据库范围启用或禁用 T-SQL 标量 UDF 内联,同时将数据库兼容性级别维持在 150 或更高。 默认值为 ON。 T-SQL 标量 UDF 内联属于智能查询处理功能系列的一部分。

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

ELEVATE_ONLINE = { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许你选择选项,使引擎自动将支持的操作提升为联机。 默认值为 OFF,表示除非在语句中指定,否则操作不会提升为联机。 sys.database_scoped_configurations 反映 ELEVATE_ONLINE 的当前值。 这些选项只适用于支持联机的操作。

FAIL_UNSUPPORTED

此值可将所有支持的 DDL 操作提升为 ONLINE。 不支持联机执行的操作会失败并引发错误。

备注

一般情况下,向表中添加列是一项联机操作。 在某些情况下(例如,当添加非可为空的列时),无法联机添加列。 在这些情况下,如果已设置 FAIL_UNSUPPORTED,操作将失败。

WHEN_SUPPORTED

此值可提升支持 ONLINE 的操作。 不支持联机的操作将脱机运行。

备注

通过提交指定了 ONLINE 选项的语句,可替代默认设置。

ELEVATE_RESUMABLE= { OFF | WHEN_SUPPORTED | FAIL_UNSUPPORTED }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许你选择选项,使引擎自动将支持的操作提升为可恢复。 默认值为 OFF,表示除非在语句中指定,否则操作不会提升为可恢复。 sys.database_scoped_configurations 反映 ELEVATE_RESUMABLE 的当前值。 这些选项只适用于支持可恢复的操作。

FAIL_UNSUPPORTED

此值可将所有支持的 DDL 操作提升为 RESUMABLE。 不支持可恢复执行的操作会失败并引发错误。

WHEN_SUPPORTED

此值可提升支持 RESUMABLE 的操作。 不支持可恢复的操作以不可恢复的方式运行。

备注

通过提交指定了 RESUMABLE 选项的语句,可替代默认设置。

OPTIMIZE_FOR_AD_HOC_WORKLOADS = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

第一次编译批处理时,启用或禁用要存储在缓存中的已编译计划存根。 默认为 OFF。 为数据库启用了数据库作用域内配置 OPTIMIZE_FOR_AD_HOC_WORKLOADS 后,已编译计划存根可在第一次编译批处理时存储在缓存中。 与完全编译的计划大小相比,计划存根的内存占用空间更小。 如果编译或再次执行批处理,则会删除已编译计划存根,并将其替换为完全编译的计划。

XTP_PROCEDURE_EXECUTION_STATISTICS = { ON | OFF }

适用范围:Azure SQL 数据库和 Azure SQL 托管实例

启用或禁用对当前数据库的本机编译的 T-SQL 模块在模块级别的执行统计信息收集。 默认为 OFF。 执行统计信息反映在 sys.dm_exec_procedure_stats 中。

如果该选项为“开”,或通过 sp_xtp_control_proc_exec_stats 启用了统计信息收集,则收集对本机编译的 T-SQL 模块的模块级别执行统计信息。

XTP_QUERY_EXECUTION_STATISTICS = { ON | OFF }

适用范围:Azure SQL 数据库和 Azure SQL 托管实例

启用或禁用对当前数据库的本机编译的 T-SQL 模块语句级别的执行统计信息收集。 默认为 OFF。 执行统计信息反映在 sys.dm_exec_query_stats查询存储中。

如果该选项为“开”,或通过 sp_xtp_control_query_exec_stats 启用了统计信息收集,则收集对本机编译的 T-SQL 模块的语句级别执行统计信息。

有关本机编译的 Transact-SQL 模块的性能监视的详细信息,请参阅监视本机编译的存储过程的性能

ROW_MODE_MEMORY_GRANT_FEEDBACK = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库范围内启用或禁用行模式内存授予反馈,同时将数据库兼容性级别维持在 150 或更高。 默认值为 ON。 行模式内存授予反馈是 SQL Server 2017 (14.x) 中推出的智能查询处理的一个功能。 行模式在 SQL Server 2019 (15.x) 和 Azure SQL 数据库中受支持。 有关内存授予反馈的详细信息,请参阅内存授予反馈

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = { ON | OFF }

适用于:SQL Server(SQL Server 2022 (16.x) 及更高版本)

允许你为源自数据库的所有查询执行禁用内存授予反馈百分位数。 默认值为“启用”。 有关完整信息,请参阅百分位和持久性模式内存授予反馈

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

MEMORY_GRANT_FEEDBACK_PERSISTENCE = { ON | OFF }

适用于:SQL Server(SQL Server 2022 (16.x) 及更高版本)

允许你为源自数据库的所有查询执行禁用内存授予反馈持久性。 默认值为“启用”。 有关完整信息,请参阅百分位和持久性模式内存授予反馈

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

BATCH_MODE_ON_ROWSTORE = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库范围内的行存储上启用或禁用批处理模式,同时将数据库兼容性级别维持在 150 或更高。 默认值为 ON。 行存储上的批处理模式是智能查询处理功能系列中的一个功能。

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

DEFERRED_COMPILATION_TV = { ON | OFF }

适用范围:SQL Server(SQL Server 2019 (15.x) 及更高版本)、Azure SQL 数据库和 Azure SQL 托管实例

允许用户在数据库范围内启用或禁用表变量延迟编译,同时将数据库兼容性级别维持在 150 或更高。 默认值为 ON。 表变量延迟编译是智能查询处理功能系列中的一个功能。

备注

对于数据库兼容级别 140 或更低级别,此数据库范围配置无效。

ACCELERATED_PLAN_FORCING = { ON | OFF }

适用对象:SQL Server(从 SQL Server 2019 (15.x)开始)、Azure SQL 数据库 和 Azure SQL 托管实例

启用经过优化的查询计划强制实施机制,这适用于所有形式的计划强制实施,例如查询存储强制实施计划自动优化USE PLAN 查询提示。 默认值为 ON。

备注

不建议禁用加速计划强制实施。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复