AZURE SQL → STACKIT SQLSERVER FLEX
Azure SQL to STACKIT SQLServer Flex
Azure SQL moves to STACKIT SQLServer Flex, a managed SQL Server 2022 instance that hosts your databases, with schema and data moved by BACPAC export and import. StackToIT writes the instance, matches the flavor to the source tier and names every setting SQLServer Flex handles in its own way.
A logical server and its database, converted
A small estate written for this page and assessed by StackToIT on 4 November 2026. Left: the input. Right: the resource blocks of the STACKIT Terraform the engine wrote; the review comments that sit above each block in the file are left out here.
resource "azurerm_mssql_server" "orders" {
name = "sql-orders-gwc"
resource_group_name = azurerm_resource_group.data.name
location = azurerm_resource_group.data.location
version = "12.0"
administrator_login = "ordersadmin"
administrator_login_password = var.sql_admin_password
minimum_tls_version = "1.2"
public_network_access_enabled = false
}
resource "azurerm_mssql_database" "orders" {
name = "orders"
server_id = azurerm_mssql_server.orders.id
sku_name = "GP_Gen5_4"
max_size_gb = 128
collation = "SQL_Latin1_General_CP1_CI_AS"
license_type = "LicenseIncluded"
short_term_retention_policy {
retention_days = 14
}
}resource "stackit_sqlserverflex_instance" "orders" {
project_id = var.project_id
name = "sql-orders-gwc"
flavor_id = var.orders_flavor_id
storage = {
class = var.sqlserverflex_storage_class
size = var.orders_storage_size
}
backup_schedule = "0 2 * * *"
network = {
acl = var.orders_allowed_cidrs
}
version = "2022"
retention_days = 30
}One instance hosts the databases
Azure SQL Database is a database-level service; SQLServer Flex runs an instance that hosts databases. The code writes one instance for the logical server and lists orders as the database to create in it.
Version and flavor from the eu01 catalogue
2022 is the SQLServer Flex version of the eu01 catalogue. For GP_Gen5_4 the flavor variable names 4.16-Single, with 4 vCPU and 16 GiB. Single-node flavors fit, because no database is Business Critical, Premium or zone-redundant.
Backups on a STACKIT schedule
Azure SQL backs up automatically and states no schedule, so the code sets a daily backup at 02:00 and 30 days of retention, the lower end of the 30 to 90 days STACKIT offers.
Every other setting named
The administrator login becomes users created with stackit_sqlserverflex_user, and the collation moves to the database resource. Minimum TLS version and the public network switch have no counterpart, and the code says so line by line.
The private endpoint, assessed
From the same run. A private endpoint has no STACKIT resource to become, so the run writes no Terraform for it and records a decision instead. Left: the input. Right: that decision as assessment.json records it (id, class, confidence and target; the reason field is summarised below).
resource "azurerm_private_endpoint" "orders_sql" {
name = "pe-sql-orders"
location = azurerm_resource_group.data.location
resource_group_name = azurerm_resource_group.data.name
subnet_id = azurerm_subnet.endpoints.id
private_service_connection {
name = "psc-sql-orders"
private_connection_resource_id = azurerm_mssql_server.orders.id
subresource_names = ["sqlServer"]
is_manual_connection = false
}
}{
"id": "azurerm_private_endpoint.orders_sql",
"class": "REDESIGN",
"confidence": "LOW",
"target": {
"service": "none — no Private Link equivalent"
}
}Reach through the access list
STACKIT managed services are reached on their own endpoint and restricted by an access list. The variable for the allowed CIDRs has no default: you list the STACKIT network prefixes of the clients.
Endpoint scope is your decision
For a database that is private in Azure, the STACKIT endpoint scope is a decision for your architect. Left unset, the STACKIT API makes the endpoint public, so decide it for each such database before anything is applied.
A private address where it is mandatory
SQLServer Flex and PostgreSQL Flex can be scoped to a STACKIT Network Area, an opt-in for enabled accounts. Otherwise a service that must have a private address runs inside the network, on servers or SKE.
How the Azure SQL estate maps
| Azure resource | STACKIT target | Migration class |
|---|---|---|
| SQL logical server with its database | SQLServer Flex instance (SQL Server 2022) | Replatform |
| Private endpoint | No private-link counterpart: access list or Network Area scope | Redesign |
| Virtual network | STACKIT project networking or Network Area | Reconfigure |
| Subnet | STACKIT network with the same IPv4 prefix | Reconfigure |
Classes as the run decided them. The database is part of the server unit, because it moves into the instance that replaces the server.
How the data moves
Export and import
Schema and data move with a BACPAC export and import, or with transactional tooling. SQLServer Flex takes no native .bak upload, so plan the move around the export.
Logins
Logins are re-created as SQL logins on the new instance, and the run asks how administrators sign in.
Storage for the whole instance
An Azure SQL logical server states no storage size; each database has its own maximum. You set the storage of the instance, sized for all its databases together.
Resource groups
STACKIT has no resource groups. The run asks how the boundaries of the source resource groups map to STACKIT projects and roles.
Proven on a real AWS estate
The AWS Retail Store Sample App, a public Terraform project from AWS, assessed by StackToIT and published in full, exactly as the run wrote it.
View Case Study- 282
- Terraform resource declarations analyzed
- 44
- migration units identified
- 38
- target units generated, from 52 considered
- 331
- plan steps written
Questions database teams ask
Does Azure SQL Managed Instance map to SQLServer Flex too?
Yes. Azure SQL Database and SQL Managed Instance both map to STACKIT SQLServer Flex, usually as REPLATFORM, because the target is a managed SQL Server instance.
How do we move the data to SQLServer Flex?
With a BACPAC export and import, or with transactional tooling. SQLServer Flex takes no native .bak upload, and logins are re-created as SQL logins.
What happens to a private endpoint?
STACKIT has no private-link endpoints. StackToIT classifies the endpoint as REDESIGN and leaves the reach of the database to your architect: an access list, a Network Area scope for enabled accounts, or a service inside the network.
Sources
Your next move: STACKIT.
Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.