Azure SQL Database Managed Instance is a flavor of Azure SQL Database that represents a fully managed SQL Server Database Engine Instance hosted in Azure cloud.
Azure SQL Database is a PaaS database service that has three flavors:
- Standalone Database — isolated and self-contained database service that has database scoped functionalities. This flavor is designed for modern cloud-born applications, software-as-a-service solutions, and microservices that use singe database to store data.
- Elastic pool — a group of Standalone databases that share the same resources.
- Managed Instance —full SQL Server Instance with instance level functionalities (SQL Agent, Broker, .NET hosting) that is designed for easy migration of most of the on-premises databases to Azure cloud.
Managed Instance is the latest offer in Azure SQL Database service that shares the same code with the latest stable version of SQL Server Database Engine and has the latest features, performance improvements, and security patches.
What is Managed Instance?
Azure SQL Database Managed Instance is fully managed SQL Server Database Engine instance hosted in Azure and placed in your network. It has most of the SQL Server 2017 features (excluding some on-premises Windows features such as Windows logins or potentially harmful features such as extended stored procedures) and enables you to move to Azure cloud almost any database that you have in on-premises SQL Server instance. Every instance is fully isolated from the other customer instance and placed in your dedicated subnet with assigned private ip addresses.
Managed Instance is a SQL Server placed in your network hosted by Azure cloud. You need to create Azure VNET and a dedicated subnet where the instance should be deployed. There are some networking constraints for the VNET/subnet that you need to review before you create a managed instance.
There is no public IP address dedicated to the Managed Instance. Only applications in your private network can access Managed Instance. In addition, your network administrators have the full control and can configure access to Managed Instance using standard methods such as Network security Groups and firewalls. From the security point of view, Managed Instance enables you to use the most recommended security policies to protect your database.
Managed Instance enables you to use almost any feature that you have in SQL Server 2017 Database Engine. Managed Instance supports CLR, cross-database queries, linked servers, Service Broker/Query Notifications, native BACKUP/RESTORE statements, db_mail, etc.
You can find feature compatibility matrix here.
Managed Instance enables you to choose how many CPU cores you want to use and how much storage you need. You can create a Managed Instance with 16 cores and 500GB storage, and then increase or decrease these numbers depending on your needs. Changing CPU or storage in instance can be done via Azure portal using simple slider:
Any change that you made will be almost instant. This way you can add more power to your instance when needed, and decrease cost by removing resources when they are not needed.
Migration to Azure
Managed Instance enables you to easily move your database to Azure cloud. The simplest way to migrate database is to create a backup, move it to Azure Blob storage and restore the database on Managed instance using standard RESTORE DATABASE …. FROM URL T-SQL statement. If you need minimal downtime during migration you can use Azure Database Migration Service.
See more information about migration to Managed Instance here.
Managed Instance is fully Platform as a Service database offer. High availability, automated backups, point-in-time restore, automatic plan correction, threat detection, vulnerability assessment, and other intelligent features are built-in into service without any additional charge.
OS patching and database upgrades are handled automatically and do not require any action.
In addition to built-in monitoring and maintenance features, you can use any 3rd-party tool to monitor and manage your instance, because most of the system views are exposed.
Azure SQL Managed Instance is not a service on public endpoint. Azure SQL Managed Instance is placed on private IP address in your VNET. It is just hosted and managed by Azure cloud.
There are several ways to connect to your Managed Instance.
- You can create VPN connection between your on-premises network and Azure VNET where Managed Instance is placed. Managed Instance will be seen as any other SQL Server in your network.
- You can connect via some Azure VM in your Azure VNET (using standard RDP or via some app that is in your Azure VM). If your VM is placed in some other Azure VNET you need to establish peering between these two networks.
- You can connect your web application to Managed Instance using Azure Apps VNET Integration or by placing your Web App into App Service environment that is placed in VNET. If your Web App or App service Environment is placed in another VNET, you need to establish peering between these two networks.
Azure SQL Database Managed Instance is the best destination for SQL Server databases that need to be managed by Azure cloud. Public preview for Managed Instance is already started and you can submit request for your Managed Instance via Azure portal. See more information about the Managed Instance here.