ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SQL Assessment API 快速上手:两步完成 SQL Server 配置最佳实践评估

2026/9/25 9:14:31 拓冰建站 浏览量
SQL Assessment API 快速上手:两步完成 SQL Server 配置最佳实践评估 示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载SQL Assessment API 是微软官方推出的 SQL Server 配置评估机制它随 SqlServer PowerShell 模块 展开带你用两条命令完成评估、读懂评估结果的每一个字段并进一步掌握 Azure VM 专属规则、操作系统级数据采集以及基于源码的扩展方向——读完即可在自己的环境里落地一套可持续的 SQL Server 配置巡检方案。SQL Assessment API 是什么在开始动手前先明确 API 的定位。根据仓库根目录 README.md 的说明SQL Assessment API 提供了一种评估 SQL Server 配置是否符合最佳实践的机制API 自带一套名为 “Microsoft ruleset” 的默认规则集其中包含由 SQL Server 团队建议的最佳实践规则。规则集会随版本发布持续增强同时 API 本身被设计为高度可定制、可扩展的方案——用户既可以微调默认规则也可以创建属于自己的规则。该 API 可用于评估SQL Server 2012 及更高版本以及Azure SQL Database 托管实例Managed Instance更多目标类型后续持续增加。评估通常针对两类目标对象SQL Server实例Server与数据库Database。第 1 步安装 SqlServer PowerShell 模块评估的第一步是安装 PowerShell 的 SqlServer 模块。在 PowerShell 中执行Install-Module -Name SqlServer -AllowClobber如果模块已存在旧版本推荐加上-Force强制覆盖安装然后用Get-Module确认当前安装的版本Install-Module -Name SqlServer -AllowClobber -Force Get-Module从 release-notes.md 可以看到SQL Assessment API 的评估引擎与SqlServer模块、SqlManagementObjectsSMO包协同发布不同历史版本对应不同的模块版本号例如 GA 版 21.1.18206、21.1.18245 等。如果仓库 docs/README.md 中提及某些功能需要22.0.30-preview或更高版本的 SqlServer 模块说明较新的评估特性如性能计数器类 probe依赖更新的引擎版本——安装后务必核对Get-Module的输出与 release-notes.md 中标注的版本要求。提示SQL Assessment API 引擎同样可以通过 SqlManagementObjectsSMO包 在 .NET 应用中直接调用仓库中的SqlAssessmentClient示例项目即演示了这种用法下文会展开介绍。第 2 步对本地实例发起评估模块安装完成后对本地 SQL Server 实例执行评估只需要一条命令Get-SqlInstance -ServerInstance localhost | Invoke-SqlAssessment这条命令的语义是Get-SqlInstance获取本地实例对象通过管道传递给Invoke-SqlAssessment——后者会为每个输入对象构建检查清单、逐一执行检查并返回最佳实践建议。评估结果大致如下仓库文档中的样例输出PS: Get-SqlInstance -ServerInstance localhost | Invoke-SqlAssessment TargetPath: Server[NameLOCAL] Sev. Message Check ID Origin ---- ------- -------- ------ Info Enable trace flag 834 to use large-page allocations to improve TF834 Microsoft Ruleset 0.1.202 analytical and data warehousing workloads. Low Detected deprecated or discontinued feature uses: String literals DeprecatedFeatures Microsoft Ruleset 0.1.202 as column aliases, syscolumns, sysusers, SET FMTONLY ON, XP_API, Table hint without WITH, More than two-part column name. We recommend to replace them with features actual for SQL Server version 14.0.1000. Medi Amount of single use plans in cache is high (100%). Consider PlansUseRatio Microsoft Ruleset 0.1.202 enabling the Optimize for ad hoc workloads setting on heavy OLTP ad-hoc workloads to conserve resources. ...从仓库自带的真实运行截屏 images/SQLAssessmentPSResult.png 可以看到同样的输出形态命令Get-SqlInstance -ServerInstance localhost\SQL2017 | Invoke-SqlAssessment执行后顶部显示TargetPath: Server[Name...]表格包含Sev.严重级别、Message建议内容、Check ID检查项标识与Origin规则来源四列。读懂评估结果的四个关键属性每一条评估结果rule都包含若干属性以下是文档明确列出的核心属性非完整列表属性含义Severity严重级别。不同版本对级别命名略有差异较早版本使用info / warning / critical在 release-notes.md 的 1.1.0 版本记录中已统一为Information、Low、Medium、High四级输出列头显示为 Info、Low、Medi 等缩写UsingAzureRules.md 中也印证了 Severity 可以为Information、Medium、Low、High。Message推荐建议的正文说明当前配置的问题及应采取的整改动作。HelpLink指向微软官方文档中该主题详细资料的链接Message 不足时提供更多信息。Origin该建议来自哪个规则集及其版本号例如Microsoft Ruleset 0.1.202。规则集是评估的“大脑”ruleset.json 结构Origin中提到的Microsoft Ruleset对应的就是仓库根目录的 ruleset.json。这个文件是 API 默认交付的全部规则定义当前仓库中该文件约两万行、规则版本 1.1.17文件头部展示了规则集的元信息与首条规则{ schemaVersion: 1.0, name: Microsoft ruleset, version: 1.1.17, rules: [ { id: AutoCreateStats, itemType: definition, target: { type: Database, platform: [Windows, Linux], engineEdition: SqlServer, ManagedInstance, name: { not: [master, msdb, tempdb] }, version: [11.0,) }, tags: [DefaultRuleset, Performance, Statistics, QueryOptimizer], displayName: Auto-Create Statistics option should be on, description: The Query Optimizer determines whether an index is useful ..., message: Turn on Auto-Create Statistics option to improve query performance, helpLink: https://docs.microsoft.com/sql/relational-databases/statistics/statistics#CreateStatistics, level: Medium, condition: is_auto_create_stats_on, probes: [DatabaseConfiguration] } ] }可以看到一条规则的完整骨架target限定适用对象数据库类型、Windows/Linux 平台、SqlServer/ManagedInstance 引擎版本、排除 master/msdb/tempdb、SQL Server 版本区间[11.0,)表示 2012 及以上tags用于把规则按Performance、Security、Storage等类别组合displayName、description、message、helpLink分别对应评估输出中的展示名、背景说明、整改建议和参考文档level即严重级别condition定义“合规”的判定条件如自动创建统计信息应开启probes列出获取判定数据所需的探针。需要查看全部规则时有两个入口ruleset.json——机器可读的完整规则定义JSON 格式DefaultRuleset.csv——同一规则集的可读版本便于快速浏览、搜索和筛选规则。评估实例上的所有数据库Get-SqlInstance评估的是实例级配置若想同时获得该实例上所有数据库的建议将对象换成Get-SqlDatabase即可Get-SqlDatabase -ServerInstance localhost | Invoke-SqlAssessment这条命令会枚举本地实例上的全部数据库并针对每个数据库运行适用于 Database 目标的规则例如上面的AutoCreateStats规则即属于此类。从 PowerShell 走向编程化SMO 客户端与 Linux 自动化评估不止 PowerShell 一种入口仓库还提供了两类值得参考的实战形态。用 SMO 在 .NET 程序里调用评估仓库的 SqlAssessmentClient/AssessmentClient.SMO/Program.cs 演示了如何通过 SMO 编程调用评估引擎核心调用链只有三步建立目标连接var target new Server();连接本机默认实例获取可用检查清单target.GetAssessmentItems()返回IEnumerableICheck并可通过c.Tags收集全部规则分类如 Performance、Storage、Security执行评估target.GetAssessmentResultsList()运行全部检查或传入分类标签如target.GetAssessmentResultsList(Performance Security)只运行选定的检查结果IAssessmentResult提供Message与Check.HelpLink等属性。程序会交互式提示输入分类名回车运行全部检查输入exit退出并把结果逐条打印——这可以看作 PowerShell 评估的 .NET 等价实现适合嵌入 CI 或自建巡检工具。在 Linux / RHEL 上无人值守运行评估仓库的 RHEL/runassessment.ps1 是一个面向 LinuxRHEL环境的完整自动化脚本展示了生产化评估的要点从/var/opt/mssql/secrets/assessment读取登录凭据前两行分别为用户名与密码构造PSCredential解析/var/opt/mssql/mssql.conf中的network tcpport配置拼出服务器,端口形式的$serverInstance用Get-SqlInstance获取实例后通过Get-TargetsRecursive递归包含实例与所有数据库管道传递给Invoke-SqlAssessment 3131 用于捕获警告流通过ConvertTo-LogOutput把每条结果归一化为含Severity、CheckId、CheckName、Message、RulesetName、RulesetVersion、HelpLink、TargetPath等字段的结构化对象最终ConvertTo-Json -AsArray输出到/var/opt/mssql/log/assessments/assessment-latest注释中说明可改用ConvertTo-Csv切换输出格式可用格式为 JSON、CSV、XML出错时把错误写入assessment-latest-errors日志。这个脚本印证了评估结果的每个属性都可以被程序化消费是“评估结果落盘留档、定期巡检”这类场景的直接参考实现。进阶一评估 Azure VM 上的 SQL Server 专属规则如果目标实例部署在 Azure 虚拟机上还可以启用仅适用于 Azure 环境的规则。仓库文档 UsingAzureRules.md 给出了完整步骤安装 Azure PowerShell 模块 与 Az.ResourceGraph 模块调用评估前先用Connect-AzAccount登录 Azure若希望跨 PowerShell 会话复用 Azure 账号连接只登录一次后续会话需显式Import-Module Az.ResourceGraph用Get-SqlInstance选取目标实例可通过Get-Credential提供凭据-Credential为可选参数Connect-AzAccount Set-AzContext My-Pay-As-You-Go # 可选切换到指定订阅上下文 $cred Get-Credential # 可选创建凭据对象 $target Get-SqlInstance -ServerInstance Computer002\InstanceName -Credential $cred Invoke-SqlAssessment $target输出中即会出现 Azure 专属检查项例如Low Use memory optimized virtual machine sizes for the best AzSqlVmSize Microsoft Ruleset 0.1.202 performance of SQL Server workloads其中AzSqlVmSize规则仅适用于 Azure VM 上的 SQL Server它检查 VM 大小是否为内存优化系列。release-notes.md 中 1.0.304 版本的记录也确认了这条规则“SQL Server on Azure VM - VM size is not memory-optimized”同时新增了多个 SQL Server 服务账户、服务停止状态等面向 Windows 服务WMI 探针的规则。进阶二采集操作系统层数据非 SQL 探针默认情况下绝大多数 probe探针通过 T-SQL 从动态管理视图获取数据但部分检查需要操作系统层的信息如内存、磁盘、服务状态。要启用这类探针需按 UsingNonSQLProbes.md 的说明在目标实例上临时启用xp_cmdshell与 SQL Server PowerShell启用xp_cmdshell配置选项在目标服务器上启用 SQL Server PowerShell 访问确保 SQL Server 登录账号对xp_cmdshell存储过程有执行权限执行评估评估完成后务必关闭xp_cmdshell因其本身违反最佳实践EXECUTE sp_configure xp_cmdshell, 0; RECONFIGURE文档同时提示在这些设施被禁用的情况下部分检查会被跳过而非报错。仓库 release-notes.md 也佐证了非 SQL 探针的类型演进——在 1.0.265 版本中新增了CMDSHELL、WMI、REGISTRY、POWERSHELL探针类型此前只有 SQL 与 EXTERNAL后续版本又加入了基于 WMI 的ServiceInfo探针用于服务状态检查与AzStorage、AzDiskMetadataAzure 磁盘与卷信息等。各探针的详细定义可查阅 docs/Reference/Probes/ 目录下的说明文档。进阶三定制与扩展规则集SQL Assessment API 的“可定制、可扩展”是它的核心卖点之一仓库提供了两个现成的示例配置文件DisablingBuiltInChecks_sample.json演示三种禁用方式——按规则 ID 禁用单条规则、按TraceFlag标签禁用一组规则、针对名为DBName1/DBName2的数据库禁用整个默认规则集MakingCustomChecks_sample.json演示如何编写包含两条检查的自定义规则集分为rules与probes两大部分。以示例中的QueryStoreOn规则为例可以看到自定义规则的关键字段target声明规则适用的对象——type: Database、version: [13.0,)SQL Server 2016 及以上[12.0,13.0)表示版本 ≥12.0 且 13.0、platform: Windows, Linux、engineEdition: OnPremises, ManagedInstance、name: { not: /^(master|tempdb|model)$/ }排除系统库itemTypedefinition表示声明新规则override表示覆盖/定制已有规则tags把规则归入CustomRuleset、Performance等子集便于按标签批量执行对应 SMO 示例中按分类筛选检查的能力probes声明获取数据所用的探针如Custom_DatabaseConfigurationcondition定义合规判定如equal: [query_store_state, 2]Query Store 实际运行模式应为 2即 Read Write。示例中的Custom_DatabaseConfiguration探针则展示了 probe 的编写方式一个探针名可以挂多个针对不同 SQL Server 版本/平台的实现implementation每个实现以type: SQL声明使用 T-SQL 查询target.version用于区分实现如(,12.0)对应 2014 之前、[13.0,)对应 2016 及以上其中 2016 的实现还使用了useDatabase: true表示查询在目标数据库上下文中执行替代USE DATABASENAME;。关于定制机制的更完整说明可继续阅读仓库 docs/Customization/ 目录如 Rule.md、RulesetFileStructure.md、Probe.md 等以及 docs/Tutorials/ 下的教程创建自定义规则、禁用内置规则、覆盖默认阈值。学习路径与配套资源至此你已经走通了 SQL Assessment API 的完整链路安装模块 → 两步评估 → 解读结果 → 按需深入。如果想继续深入仓库 samples/manage/sql-assessment-api 还提供了这些配套资源官方文档页面SQL Assessment API PowerShell cmdlet 概述docs.microsoft.com/sql/sql-assessment-api/sql-assessment-api-overviewSQL Assessment User Guide系统讲解内置功能与定制工作流并标注了各特性所需的 SqlServer 模块最低版本交互式教程 NotebookSQLAssessmentAPITutorialNotebook.ipynb面向 Azure Data Studio 的 PowerShell 内核需要 ADS 1.13.0 或更新版本另有更精简的 SQLAssessmentAPIQuickStartNotebook.ipynb也可以直接下载 notebooks.zip 一次性获取全部文件DefaultRuleset.csv 与 ruleset.json完整的默认规则清单release-notes.md逐版本记录新增规则、新探针、bug 修复与已知问题是了解引擎能力边界的第一手资料。把上面两步命令沉淀为周期性巡检参考 RHEL/runassessment.ps1 的落盘模式或接入 SMO 编程接口再结合规则集定制就能形成一套贴合自己环境、可持续演进的 SQL Server 配置健康管理方案。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐SQL Server 配置健康评估SQL Assessment API 快速入门指南SQL Server 配置健康评估SQL Assessment API 快速入门指南 导读 本文基于 sql server samples https://l示例工程数据库教程后端SQL Server SQL Assessment API 实战指南从快速最佳实践评估到自定义规则集sql-server-samples 仓库详解SQL Server SQL Assessment API 实战指南从快速最佳实践评估到自定义规则集sql server samples 仓库详解 SQL示例工程数据库教程后端SQL Assessment API 自定义探测指南用 T-SQL Probe 驱动 SQL Server 配置评估SQL Assessment API 自定义探测指南用 T SQL Probe 驱动 SQL Server 配置评估 SQL Assessment API 通示例工程数据库教程后端上一篇Argon2在移动开发中的终极指南Android和iOS平台集成完整教程下一篇python-mode高级配置选项自定义Python开发环境的完整手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考