Error: Private DNS Zone Private Link Not Provisioned in Region
Issue
The following error message appears:
Private DNS Zone privatelink./subscriptions/{identifier}/resourceGroups/azusetstarg01/providers/Microsoft.Sql/managedInstances/host_name.database.windows.net is not provisioned in the AZURE_EASTUS region.
Environment
- All database connectors
- Connection method: Private networking
Understanding the issue
- Private DNS zone enables Private Link name resolution to a private IP for Azure SQL Managed Instance.
privatelink.database.windows.netis the required zone for SQL MI Private Link.Not provisioned in AZURE_EASTUSmeans the East US VNet isn’t correctly linked to that zone, or the A record for the Managed Instance isn’t present.
Resolution
Missing or incorrect private DNS zone:
- Check if the
privatelink.database.windows.netprivate DNS zone exists. Go to Private DNS zones in the Azure portal and search for this specific zone name within the subscription. - If it doesn't exist, create the private DNS zone. Ensure the name is exactly
privatelink.database.windows.net. You can place the resource group for the zone in any region, but it's often placed in a central networking resource group.
- Check if the
Missing or incorrect virtual network link:
- A private DNS zone needs to be linked to the virtual network(s) where your clients (VMs, other Azure services) or your SQL Managed Instance's private endpoint reside, so they can resolve the private IP.
- Steps to verify and create the link:
Go to the
privatelink.database.windows.netprivate DNS zone in the Azure portal.In the left-hand menu, select Virtual network links under Settings.
Check if the virtual network(s) in the
AZURE_EASTUSregion that are supposed to connect tohost_name.database.windows.netare listed and enabled.If not, click Add and create a new virtual network link.
Type a descriptive name for the virtual network link.
Select the appropriate subscription.
Choose the virtual network in the
AZURE_EASTUSregion that is connected to your SQL Managed Instance's private endpoint (or where clients are located).Ensure Enable auto registration is checked.
For SQL Managed Instances, the private endpoint usually handles the A record registration.
Check the private endpoint's DNS configuration. Ensure the A record for your SQL managed instance exists in the
privatelink.database.windows.netzone.- When you create a private endpoint for your SQL Managed Instance, it typically offers to integrate with a private DNS zone. If this step was missed or failed, the A record pointing your SQL Managed Instance's FQDN to its private IP might not be in the
privatelink.database.windows.netzone. Review Azure activity logs for any errors related to the creation or modification of the private DNS zone, virtual network links, or private endpoints. - Check the private endpoint:
- Go to your Azure SQL Managed Instance (
host_name). - Under Security, select Private endpoint connections.
- Select the private endpoint connected to your instance.
- On the private endpoint's overview page, look for DNS configuration. It should show the
privatelink.database.windows.netzone and the corresponding A record. If there's an issue here, you might need to recreate the private endpoint or manually add the A record to the private DNS zone.For Azure SQL Managed Instance private endpoints, the FQDN is typically
host_name.privatelink.database.windows.net, which then resolves to the private IP address. Ensure your connection strings use the original FQDN (host_name).
- Go to your Azure SQL Managed Instance (
- When you create a private endpoint for your SQL Managed Instance, it typically offers to integrate with a private DNS zone. If this step was missed or failed, the A record pointing your SQL Managed Instance's FQDN to its private IP might not be in the
Custom DNS servers or hybrid DNS:
- If you're using custom DNS servers within your virtual network (instead of Azure's default DNS) or have a hybrid setup with on-premises DNS servers, these DNS servers must be configured to correctly forward or resolve queries for
privatelink.database.windows.net. - This often involves setting up a conditional forwarder on your custom DNS servers (or Azure DNS Private Resolver) to forward queries for
privatelink.database.windows.netto Azure's default DNS (168.63.129.16).
- If you're using custom DNS servers within your virtual network (instead of Azure's default DNS) or have a hybrid setup with on-premises DNS servers, these DNS servers must be configured to correctly forward or resolve queries for