SQL Server SQL Assessment API 实战指南:从快速最佳实践评估到自定义规则集(sql-server-samples 仓库详解)
示例工程数据库教程后端【免费下载链接】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 / Azure SQL 生态的一套配置评估机制它基于随产品附带的最佳实践规则集自动检查 SQL Server 实例与数据库配置是否符合 SQL Server 团队的推荐规范并输出可量化的改进建议。本文以sql-server-samples仓库中 samples/manage/sql-assessment-api 的官方用户指南docs/README.md为骨架完整讲解安装、调用、结果解读以及如何通过 JSON 规则集自定义评估流程——包括新建规则、禁用内置规则、覆盖默认阈值并辅以仓库内的源码级示例与参考文档。读完本文你将掌握从两条命令完成评估到编写公司内部合规规则集的完整链路。SQL Assessment API PowerShell 评估结果示例一、SQL Assessment API 是什么根据仓库根目录 README.md 的说明SQL Assessment API 提供了一种评估 SQL Server 配置是否符合最佳实践的机制。API 随附一个由 SQL Server 团队建议的最佳实践规则集ruleset该规则集会随新版本持续扩充同时 API 从设计上就是高度可定制、可扩展的——用户可以调优默认规则、创建自己的规则。支持评估的对象SQL Server 2012 及更高版本、Azure SQL Database 托管实例Managed Instance更多对象类型持续追加中。使用方式可以通过 PowerShell 的 SqlServer 模块、SMOSqlManagementObjects或 Azure Data Studio 的 SQL Server Assessment 扩展来驱动引擎。官方文档明确说明部分文档描述的功能仅在 SqlServer PowerShell 模块22.0.30-preview 或更高版本中可用使用前请核对模块版本。评估引擎的两步工作流程从 RulesandProbes.md 可以看到评估的精确性来自一个两阶段流程为给定目标构建检查清单checklist根据目标实例、数据库等筛选出一整套适用的检查项逐项核对清单并报告每条最佳实践违规对清单中的每一项验证目标是否满足最佳实践输出违规建议。清单的构建完全基于规则rules。每个规则要么定义一个新检查要么修改一个或多个已有检查规则存放在**规则集ruleset**中每个规则集拥有独立的名称和版本。用户可以把多个规则集依次注册进引擎构建清单时引擎按添加顺序应用规则。最佳实践并非普适的同一套规则对不同 SQL Server 版本、版本类型Edition、托管平台如物理机 vs 云环境甚至不同数据库如msdb与用户库可能完全不适用这正是 API 通过目标模式target pattern精确筛选规则的原因。二、快速开始两步完成评估1. 安装 SqlServer 模块在 PowerShell 中执行对应 docs/How-To/QuickStart.md 与仓库根 QuickStart.mdInstall-Module -Name SqlServer -AllowClobber如需强制升级到最新版并查看已安装版本Install-Module -Name SqlServer -AllowClobber -Force Get-Module2. 对本地实例发起评估Get-SqlInstance -ServerInstance localhost | 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. ...3. 评估全部数据库如果希望针对本地实例上的所有数据库产出建议Get-SqlDatabase -ServerInstance localhost | Invoke-SqlAssessment4. 结果字段解读每条建议都带有以下属性官方文档列出的非完整清单属性含义Severity严重级别取值为Information / Low / Medium / High部分旧版本文档中写作 info、warning、criticalMessage建议正文说明推荐做法如需深入了解可借助同一条记录的HelpLink属性跳转到对应主题文档Origin建议来源显示规则集名称与版本如Microsoft Ruleset 0.1.202Check ID触发该建议的规则标识如TF834、DeprecatedFeatures、PlansUseRatio完整的规则清单与属性定义见 ruleset.json仓库还提供了可读性更好的 DefaultRuleset.csvGitHub 会将其渲染成交互式表格支持搜索与行过滤。三、进阶场景一评估 Azure VM 上的 SQL Server针对部署在 Azure 虚拟机上的 SQL Server评估不仅可以使用本地规则还能启用仅适用于 Azure 环境的专用规则。步骤对应 UsingAzureRules.md确保已安装 Azure PowerShell 模块 与Az.ResourceGraph模块Install-Module -Name Az Install-Module -Name Az.ResourceGraph发起评估前先登录 Azure评估引擎需要从 Azure Resource Graph 拉取数据Connect-AzAccount可选登录后可用Set-AzContext My-Pay-As-You-Go切换订阅上下文。Azure 账户连接可在多个 PowerShell 会话间保持但跨会话复用连接时必须显式执行Import-Module Az.ResourceGraph否则 Azure 专用规则拿不到数据。可选若实例需要凭据先创建凭据对象$cred Get-Credential选择要评估的 SQL Server 对象-Credential为可选参数$target Get-SqlInstance -ServerInstance Computer002\InstanceName -Credential $cred调用评估Invoke-SqlAssessment $target输出示例TargetPath : Server[NameContosoAzureSQL] Sev. Message Check ID Origin ---- ------- -------- ------ 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 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 生效用于检查虚拟机规格是否采用内存优化型系列memory-optimized VM sizes。四、进阶场景二启用非 SQL 探针获取操作系统数据默认情况下绝大多数探针probe通过 T-SQL 获取数据但部分数据如 Windows 服务状态、磁盘信息不在 SQL Server 的 DMV 中需要借助xp_cmdshell与PowerShell从操作系统侧获取对应 UsingNonSQLProbes.md。在这些设施被禁用时相关检查会被跳过。官方流程明确提示xp_cmdshell 应临时启用——它本身不符合最佳实践评估完成后务必立即关闭。步骤按官方文档启用xp_cmdshell配置选项在目标服务器上启用 SQL Server PowerShell确保 SQL Server 用户对xp_cmdshell存储过程有访问权限执行评估评估完成后关闭EXECUTE sp_configure xp_cmdshell, 0; RECONFIGURE五、核心概念规则Rule与探针Probe自定义能力是 SQL Assessment API 的灵魂。理解 Rule.md 与 Probe.md 中定义的两个核心对象是后续所有定制工作的基础。5.1 规则Rule规则是一个 JSON 对象把自身属性应用到新建或已有检查上。关键属性属性取值 / 说明itemTypedefinition定义新检查或override修改已有检查。一个检查可以被多条规则修改id要定义/修改的检查 ID也可以是ID 或标签的数组用于一次修改多个检查按任一标签命中匹配target目标模式Target Pattern规则仅当被评估对象匹配时才生效targetFilter与target语法相同的目标模式仅用于 override可在覆盖时限定目标tags短字符串数组用于给检查归类如 Memory 标签代表内存相关最佳实践单字标签效果最佳displayName清单中展示的短名称message消息模板检查发现不合规时展示给用户description长描述解释该检查的意义与影响helpLink指向最佳实践说明与修复建议的链接level严重级别Information/Low/Medium/Highprobes本检查所需探针的引用数组见 ProbeReference.mdcondition条件表达式JSON 对象树返回true表示最佳实践已落实返回false则向用户展示 messageparameters任意属性随探针数据一起传给条件、消息模板、探针参数与转换规则的应用顺序构建清单时规则按加入顺序应用第一条规则定义检查并分配唯一字符串 ID后续规则按 ID 或标签覆盖检查——因此覆盖规则可以一次性修改多个检查。例如下面这条规则让MaxMemory检查出现在所有 SQL Server 2012 实例的清单中并把limit参数设为 2147483647{ id: MaxMemory, itemType: definition, target: { type: Server, version: [11.0,) }, limit: 2147483647 }而这条规则把它改成 2000000000{ id: MaxMemory, itemType: override, limit: 2000000000 }覆盖还可以按版本类型细分例如为 Standard 版和 Express 版分别设置不同的内存上限同样可以按平台禁用规则——下面把MaxMemory和所有带Performance标签的检查在 Linux 实例上全部关闭{ id: [ MaxMemory, Performance ], itemType: override, targetFilter: { platform: Linux }, enabled: false }注意enabled语义检查进入清单不代表一定会执行。每条检查默认enabled true若所有规则应用后该属性为false引擎将跳过此检查。5.2 探针Probe探针是规则获取数据的来源。检查本身不直接从目标服务器取数而是引用探针探针以 JSON 属性的形式存在属性名即探针 ID属性值为探针实现probe implementation数组。引擎选择第一个匹配目标模式的实现因此数组内实现顺序很重要一个探针可以由 CLR 与 SQL 实现混搭组成其他规则集也可以在列表之上追加实现。设计约束官方明确探针应设计为无副作用的函数调用顺序不确定引擎可能为降低目标实例负载而重排调用没有检查需要某探针的数据时该探针不会被调用默认规则集的探针只读取元数据如更新日志、服务器属性不读取用户表数据不向数据库/实例写入任何内容也不设置任何标志。探针的type决定取数机制详见 Probes/README.md类型说明AzGraph对 Azure Resource Graph 执行 Kusto 查询AzGraphProbe.mdAzMetadata用 JSONPath 提取 Azure Instance Metadata Service 返回对象中的字段AzMetadataProbe.mdCMD在目标机器上运行命令外壳脚本CMDShellProbes.mdExternal任意 .NET 代码ExternalProbe.mdPowerShellPowerShell 脚本PowerShellProbes.mdRegistry读取注册表RegistryProbes.mdSQLT-SQL 查询TSQLProbes.mdWMIWMI 查询WMIProbes.md探针实现对象还支持requires显式功能需求不满足则探针不执行、依赖它的检查被跳过并返回警告与runFor逻辑需求不满足则返回空结果集两个属性详见 ProbeRequirements。5.3 多探针数据的组合规则当一个检查从多个探针取数时结果数据集是所有行的全部组合类似 T-SQL 的CROSS JOIN。条件表达式会逐行计算例如某数据库用 3 块磁盘存文件某探针产出 2 行、另一探针产出 3 行则条件会被计算 2×36 次其中 2 次为false就会生成 2 条消息。这也解释了为什么探针的目标要与版本对齐——不同 SQL Server 版本的 DMV 结构不同探针可提供多个按版本区分的实现引擎为目标选择最合适的一个。六、实战编写自定义规则集规则集就是一个 JSON 文件通常包含rules与probes两大块。仓库提供了两个可直接参考的样例MakingCustomChecks_sample.json新建自定义规则与 DisablingBuiltInChecks_sample.json禁用内置规则。6.1 定义规则Rules 块以下完整示例来自官方文档 CreatingCustomRules.md它定义了一条Query Store 应处于活动状态的检查{ //Target describes a SQL Server object the check is supposed to run against target: { //This check targets an object of the Database type type: Database, //Applies to SQL Server 2016 and higher //Another example: [12.0,13.0) reads as any SQL Server version 12.0 and 13.0 version: [13.0,), //Applies to SQL Server on Windows and Linux platform: Windows, Linux, //Applies to SQL on Premises and Azure SQL Managed Instance. Here you can also filter specific editions of SQL Server engineEdition: OnPremises, ManagedInstance, //Applies to any database excluding master, tempdb, and msdb name: { not: /^(master|tempdb|model)$/ } }, //Rule ID id: QueryStoreOn, //Can be definition or override. The former is to declare a rule, the latter is to override/customize an existing rule. See also DisablingBuiltInChecks_sample.json itemType: definition, //Tags combine rules in different subsets tags: [ CustomRuleset, Performance, QueryStore, Statistics ], //Short name for the rule displayName: Query Store should be active, //A more detailed explanation of a best practice or policy that the rule check description: The Query Store feature provides you with insight on query plan choice and performance. It simplifies performance troubleshooting by helping you quickly find performance differences caused by query plan changes. Query Store automatically captures a history of queries, plans, and runtime statistics, and retains these for your review. It separates data by time windows so you can see database usage patterns and understand when query plan changes happened on the server. While Query Store collects queries, execution plans and statistics, its size in the database grows until this limit is reached. When that happens, Query Store automatically changes the operation mode to read-only and stops collecting new data, which means that your performance analysis is no longer accurate., //Usually, its for recommendation what user should do if the rule raises up an alert message: Make sure Query Store actual operation mode is Read Write to keep your performance analysis accurate, //Reference material helpLink: https://docs.microsoft.com/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store, //List of probes that are used to get the required data for this check. See below to know more about probes. probes: [ Custom_DatabaseConfiguration ], //Condition object is to define good and bad state, the latter is when the rule should raise an alert. When the condition is true, it means that the checked object complies with the best practice or policy. Otherwise, the rule raises an alert (it actually adds its message to the resulting set of recommendations) condition: { //It means that the variable came from the probe should be equal to 2 equal: [ query_store_state, 2 ] } }要点速记target描述检查作用的对象类型、版本区间、平台、版本类型甚至用name正则排除系统库condition中query_store_state引用探针返回的变量equal运算表示该变量等于 2Query Store 处于 Read Write 模式时视为合规。6.2 定义探针Probes 块下面的探针名为Custom_DatabaseConfiguration为不同 SQL Server 版本提供了三套 T-SQL 实现2014 之前 / 2014 / 2016 及以后引擎按目标版本自动选择//Probe name is used to reference the probe from a rule //Probe can have a few implementations that will be used for different targets //This probe has two implementations for different version of SQL Server Custom_DatabaseConfiguration: [ { //Probe uses a T-SQL query to get the required data. Use CLR for assemblies. type: SQL, //Probes have their own target, usually to separate implementation for different versions, editions, or platforms. Probe targets work the same way as rule targets do. target: { type: Database, //This target is for SQL Server of versions prior to 2014 version: (,12.0), platform: Windows, Linux, engineEdition: OnPremises, ManagedInstance }, //Implementation object with a T-SQL query. This probe is used in many rules, thats why the query return so many fields implementation: { query: SELECT db.is_auto_create_stats_on, db.is_auto_update_stats_on, 0 AS query_store_state, db.collation_name, (SELECT collation_name FROM master.sys.databases (NOLOCK) WHERE database_id 1) AS master_collation, db.is_auto_close_on, db.is_auto_shrink_on, db.page_verify_option, db.is_db_chaining_on, NULL AS is_auto_create_stats_incremental_on, db.is_trustworthy_on, db.is_parameterization_forced FROM [sys].[databases] (NOLOCK) AS db WHERE db.[name]TargetName } }, //This implementation object is to get the required data from SQL Server 2014 (look at target.version) { type: SQL, target: { type: Database, version: [12.0, 13.0), platform: Windows, Linux, engineEdition: OnPremises, ManagedInstance }, implementation: { query: SELECT db.is_auto_create_stats_on, db.is_auto_update_stats_on, 0 AS query_store_state, db.collation_name, (SELECT collation_name FROM master.sys.databases (NOLOCK) WHERE database_id 1) AS master_collation, db.is_auto_close_on, db.is_auto_shrink_on, db.page_verify_option, db.is_db_chaining_on, db.is_auto_create_stats_incremental_on, db.is_trustworthy_on, db.is_parameterization_forced FROM [sys].[databases] (NOLOCK) AS db WHERE db.[name]TargetName } }, //This implementation object is to get the required data from SQL Server 2016 and up (look at target.version) { type: SQL, target: { type: Database, version: [13.0,), platform: Windows, Linux, engineEdition: OnPremises, ManagedInstance }, implementation: { //Use this key if your query requires to run on a database that is being assessed (its a replacement for USE DATABASENAME;) useDatabase: true, query: SELECT db.is_auto_create_stats_on, db.is_auto_update_stats_on, (SELECT CAST(actual_state AS DECIMAL) FROM [sys].[database_query_store_options]) AS query_store_state, db.collation_name, (SELECT collation_name FROM master.sys.databases (NOLOCK) WHERE database_id 1) AS master_collation, db.is_auto_close_on, db.is_auto_shrink_on, db.page_verify_option, db.is_db_chaining_on, db.is_auto_create_stats_incremental_on, db.is_trustworthy_on, db.is_parameterization_forced FROM [sys].[databases] (NOLOCK) AS db WHERE db.[name]TargetName } } ]值得注意的实现细节第三个实现中useDatabase: true表示该查询需要在被评估的数据库上下文中执行等价于USE 数据库名;SQL 2016 的实现通过[sys].[database_query_store_options]动态读取query_store_state而旧版本没有该 DMV因此硬编码为0——这正是同一探针、多版本实现的典型场景。更复杂的规则还可以组合不同运算符与条件详见 Customization 目录 下的 DataTransformation.md数据转换与 LocalVariables.md局部变量。6.3 禁用内置规则当某些规则不适用于你的环境、或在你完成修复计划之前不想看到提示时可以用 override 关闭它们对应 DisablingBuiltInRules.md。下面的配置包含三个例子按 ID 禁用、按标签批量禁用、对特定数据库禁用整套默认规则集{ schemaVersion: 1.0, version: 0.2, name: Custom Overrides, rules: [ { id: LatestCU, itemType: override, enabled: false }, { id: [TraceFlag], itemType: override, enabled: false }, { id: [DefaultRuleset], itemType: override, targetFilter: { type: Database, name: [ DBName1, DBName2 ] }, enabled: false } ] }三个示例分别演示了LatestCU单条规则禁用所有带TraceFlag标签的规则禁用通过DefaultRuleset标签把默认规则集仅对DBName1、DBName2两个数据库禁用。完整样例见 DisablingBuiltInChecks_sample.json。6.4 覆盖默认阈值以FullBackup规则为例对应 OverridingDefaultThresholds.md默认阈值是超过 7 天未做全量备份Invoke-SqlAssessment -Check FullBackup | Select TargetObject, MessageTargetObject Message ------------- -------- [DevTest] Create full backup. Last full backup is over 7 days old [Prototype] Create full backup. Last full backup is over 7 days old若想改为 3 天新建BackupPolicy.json{ //Sets the schema version schemaVersion: 1.0, //Sets the version version: 1.0, //Sets the rule name name: Backup Policy, //Sets the override for the specified rule rules: [ { //Sets the type, which is override itemType: override, //Sets the name of the rule that should be overridden id: FullBackup, //Sets the new threshold threshold: 3 } ] }然后通过-Configuration参数把该文件注入评估Invoke-SqlAssessment -Check FullBackup -Configuration .\BackupPolicy.json | Select TargetObject, MessageTargetObject Message ------------- -------- [DevProd] Create full backup. Last full backup is over 3 days old [TestDB] Create full backup. Last full backup is over 3 days old [DevTest] Create full backup. Last full backup is over 3 days old [Prototype] Create full backup. Last full backup is over 3 days old从输出可以看到阈值覆盖后引擎重新按 3 天口径筛选出全部需要备份的数据库——这就是用自定义配置文件覆盖默认策略的完整闭环。七、JSON 配置文件格式参考Reference/JSONConfiguration.md 给出了规则集文件的权威格式说明以下是核心内容。7.1 引擎级配置属性类型说明versionstring配置文件版本当前为0.3checksarray每个元素是一个 Check 对象probesobject每个属性代表一个 Probe Family7.2 Check 对象属性类型说明namestring简短单名必须唯一tagsstring 数组检查分组/分类标签API 调用中可用标签代替名称displayNamestring展示给用户的名称descriptionstring长描述解释检查目的enabled?bool是否启用默认true禁用后对所有对象都不执行messagestring检查失败时展示的建议文本支持{variableName}与{variableName:formatString}变量引用target?SQL Object Pattern检查适用的对象模式默认匹配任意对象probesstring 数组检查所需 Probe Family 的 IDcondition?Condition Expression目标对象须满足的条件返回false时生成建议默认truelevelstring严重级别Information/Warning/CriticalanyExpression其余属性视为检查参数在表达式中以前缀的变量形式访问7.3 版本区间语法版本区间用字符串编码包含一个或两个版本号以逗号分隔两侧可用圆括号()或方括号[]表示开闭边界。版本至少需要主版本.次版本两位数字版本区间匹配内容10.0精确匹配 10.0[10.0, 13.0]10.0~13.0 闭区间10.0、10.50、11.0.345、13.0(10.0, 13.0)10.0~13.0 开区间10.50、11.0.345不匹配 10.0 或 13.0[10.0, 13.1)10.0 起、不含 13.110.0、10.50、11.0.345、13.0、13.0.234(10.0, 13.1]不含 10.0含 13.1[10.0,)10.0 及以上(10.0,)大于 10.0不含本身(,10.0]10.0 及以下(,10.0)低于 10.0不含 10.0多个版本区间可组成数组version range list匹配任一区间即命中字符串匹配则用/包裹的正则如/win.*/i不以/开头时按精确字符串处理Linux等价于/^Linux$/。7.4 表达式与条件变量以开头的字符串如query_store_state值由探针填充供表达式或建议文本消费多属性对象 AND 简写{version: 10.50.0, memorySize: 4096}等价于{and: [{version: 10.50.0}, {memorySize: 4096}]}开头的单属性 equal 简写{memorySize: 4096}等价于{equal: [memorySize, 4096]}条件数组 OR 简写仅条件表达式支持condition: [{version: 10.50.0}, {memorySize: 4096}]等价于{or: [...]}。7.5 运算符全集完整运算符参考见 Operators.md可按类别直接引用逻辑not(x)、and(a..*)无参数返回 false、or(a..*)无参数返回 true。字符串indexof/iindexof找子串首次出现的零基索引后者为大小写不敏感、startswith/istartswith、endswith/iendswith。数学ceiling、floor、max(a,b)、min(a,b)、mul(a..*)、div(a,b)、mod(a,b)、add(a..*)、sub(a,b)、bitand(a..*)、bitor(a..*)、bitxor(a..*)。集合intersect(a,b)交集大小写敏感、in(a,b)判断 a 是否在集合 b 中大小写敏感、iin(a,b)大小写不敏感版本。比较lt/less、gt/greater、eq/equal大小写敏感、ieq、ge/greaterequal、le/lessequal、ne/notequal、ine、match/imatch正则匹配、interval(a, v1, t1, ..., vn, tn, d)找到第一个 ≥ a 的阈值 tᵢ 并返回对应 vᵢ全部小于 a 时返回默认值 d。八、仓库配套资源从文档到可直接运行的示例除了上述指南文档仓库在 samples/manage/sql-assessment-api 下还提供了丰富的配套资源可作为深入学习与二次开发的起点交互式 NotebookSQLAssessmentAPIQuickStartNotebook.ipynb快速上手与 SQLAssessmentAPITutorialNotebook.ipynb完整教程覆盖定制既有规则与创建新规则均面向 Azure Data Studio 1.13.0 的 PowerShell 内核编写可直接下载 notebooks.zip 一次性获取全部文件自定义样例MakingCustomChecks_sample.json含 CLR / CmdShell / PowerShell / Registry / TSQL / WMI 探针的自定义规则集与 DisablingBuiltInChecks_sample.json以及 notebooks 目录下配套的CustomRule*.json与DisableAllTF.json、EnablePerformance.json等示例配置默认规则集ruleset.json机器可读与 DefaultRuleset.csv人类可读的交互式表格SMO 客户端示例SqlAssessmentClientAssessmentClient.sln含 Program.cs展示如何通过 SMO 编程方式接入评估引擎Linux 评估脚本RHEL/runassessment.ps1可在 RHEL 上直接发起评估版本演进记录release-notes.md 记录了各版本新增规则与探针例如 1.1.172022-12新增基于错误日志内容的 98 条建议、Performance 探针类型1.1.92022-07引入MaxCheckResults配置选项以限制评估输出量、新增 AG 系列探针1.0.2652020-07起新增 CMDSHELL、WMI、REGISTRY、POWERSHELL 探针类型。九、注意事项与最佳实践版本兼容API 支持 SQL Server 2012 及以上版本与 Azure SQL 托管实例部分新功能如非 SQL 探针、Azure 专用规则对 SqlServer 模块版本有要求官方标注 22.0.30-preview 及以上Linux 上部分 Windows 专属检查会被自动跳过。安全边界启用xp_cmdshell会扩大攻击面务必临时启用 → 评估 → 立即关闭探针被设计为只读元数据但自定义探针尤其是 CMD / PowerShell / Registry 类型的安全责任在用户自身请务必审慎评估其影响面。评估结果的可追溯性每条建议的Origin字段记录了规则集与版本配合 release-notes.md 可以追踪某条建议是哪个版本引入的便于升级评估基准后的回归比对。覆盖优于删除需要调整内置规则时优先使用overridetargetFilter精确限定范围避免用大范围禁用掩盖环境问题阈值类规则如FullBackup通过配置文件覆盖即可无需改动默认规则集文件。进一步深入可继续阅读仓库内的 Customization规则/探针/数据转换/局部变量、Tutorials三个定制教程与 ReferenceJSON 格式、探针、数据转换、运算符三组文档它们与本文共同构成完整的 SQL Assessment API 用户指南。赞分享示例工程数据库教程后端【免费下载链接】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点击查看免费下载相关推荐Label Studio Image 标签完全指南图像标注界面的核心配置与源码解析Label Studio Image 标签完全指南图像标注界面的核心配置与源码解析 Label Studio 使用 XML 风格的标签Tag来定义标注界面示例工程数据库教程后端重塑简历制作体验Reactive-Resume如何让专业简历设计变得简单高效重塑简历制作体验Reactive Resume如何让专业简历设计变得简单高效 在求职市场竞争日益激烈的今天一份精心设计的简历往往是打开职业大门的关键。然而示例工程数据库教程后端SQL Assessment API 自定义探测指南用 T-SQL Probe 驱动 SQL Server 配置评估SQL Assessment API 自定义探测指南用 T SQL Probe 驱动 SQL Server 配置评估 SQL Assessment API 通示例工程数据库教程后端上一篇II-Agent前端界面深度定制基于React的个性化开发指南下一篇PicoClaw MQTT 通道接入指南让任意设备通过 MQTT 与 AI 代理对话创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考