SQL Managed Instance without Azure Hybrid Benefit
A SQL Managed Instance paying the licence-included rate, which a customer holding SQL Server licences with Software Assurance can lower without downtime.
Why it happens
A SQL Managed Instance bills a minimum of four vCores and commonly many more, and its price includes a SQL Server licence unless the customer applies one of their own. Microsoft states that Azure Hybrid Benefit saves up to 30 percent or more and that enabling it requires no downtime, which makes it the cheapest change available on an expensive resource. Eligibility depends on holding SQL Server licences with Software Assurance, which is a fact about the customer's agreements and is invisible from inside their subscription, so this reports the rate being paid and names the entitlement as unverified rather than claiming a saving. Instances billed through an instance pool are excluded, because their compute is purchased at the pool.
Paste this into Resource Graph Explorer in the Azure portal.
resources
| where type =~ 'microsoft.sql/managedinstances'
// Scope below matches CloudFinOpsPro policy DEFAULTS: exclusions.protectTag, environment.tagKeys,
// environment.allowedTagValues, and allowUntagged false so an untagged resource counts as production.
// If your policy.yaml differs, edit the three lines below or this will disagree with your own agent.
| where tolower(tostring(coalesce(tags['cfop:protect'], ''))) !in ('true', 'yes', '1')
| extend cfopEnv = tolower(trim(' ', tostring(coalesce(tags['Environment'], tags['environment'], tags['env'], ''))))
| where cfopEnv in ('dev', 'development', 'test', 'qa', 'sandbox', 'nonprod', 'non-prod', 'staging')
| where tostring(properties.licenseType) =~ 'LicenseIncluded'
| where isempty(tostring(properties.instancePoolId))
| project instance = name, resourceGroup, location,
vCores = toint(properties.vCores),
tier = tostring(sku.tier)LicenseIncluded means you are paying Azure for the SQL Server licence. Instances in a pool are excluded because the pool carries the licence. Azure cannot see whether you hold Software Assurance, so confirm entitlement before switching.
Applies to microsoft.sql/managedinstancesWhat the agent does about it
A SQL Managed Instance paying the licence-included rate, which a customer holding SQL Server licences with Software Assurance can lower without downtime.
It will not fix this one
It finds it and tells you what to change. The change itself is yours to make, because it is not one the agent should make on your behalf.
Related checks
HDInsight worker nodes without autoscale
A Spark, Hadoop or Interactive Query cluster whose worker role has no autoscale configured, so it pays for peak worker capacity every hour of every day.
Serverless SQL database with auto-pause switched off and nothing using it
A General Purpose serverless SQL database with auto-pause disabled that had no sessions and no CPU at any point in the window, so it billed its minimum compute floor around the clock for doing nothing.
SQL Server VM paying the Azure licence rate
A SQL Server virtual machine on a Standard or Enterprise edition with its licence set to pay-as-you-go, which Azure Hybrid Benefit would replace if the customer holds Software Assurance.