Why you need to separate SQL Services into their own vnets and subnets? Let's take a look at why with Azure Managed Instances you may need to put them on a separate subnet. Each managed instance requires 32 IP addresses. Take a look at all the network requirements for Azure Managed Instance here. That requirement of the number of IP addresses for managed instance will influence the number of managed instances you can have on a subnet. Take a look here at the network connectivity architecture and other network requirements of managed instance to understand why to have them separate.
Azure SQL Database and Elastic Pools have also another set of issues related to VNETs like this one related to VPNs.
Best practice, create a separate subnet for Internet-facing servers, a separate subnet for middle tier, a "core” subnet for services such as domain controllers and SQL VMs. You may want to have servers that need to communicate between them on the same subnet to avoid the need to create Site to site or Express Route or VNET peering to communicate between them.
If you will have geographically distributed AlwaysOn Availability Groups then consider using different VNETs per region and connecting them using Azure VPN Gateways. Make sure you choose the correct one based on the bandwidth and number of connections.
Other reasons to create multiple VNETs:
- VMs that need to be placed in different Azure locations
- Workloads that need to be completely isolated from one another.
- Limits: You can have 2048 VMs on a VNET
Consider creating multiple subnets when:
- Not enough private IP addresses for all NICs in a subnet
- Foe security reasons, to apply different network security groups
- Hybrid connectivity. You can use VPN gateways and ExpressRoute circuits to connect your VNets to one another, and to your on-premises data center(s). VPN gateways and ExpressRoute circuits require a subnet of their own to be created.
- Virtual appliances. You can use a virtual appliance, such as a firewall, WAN accelerator, or VPN gateway in an Azure VNet. When you do so, you need to route traffic to those appliances and isolate them in their own subnet.