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.

Example inputmain.tf
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
  }
}
STACKIT Terraform by StackToITterraform/data.tf
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).

Example inputmain.tf
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
  }
}
StackToIT assessmentassessment.json
{
  "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 resourceSTACKIT targetMigration class
SQL logical server with its databaseSQLServer Flex instance (SQL Server 2022)Replatform
Private endpointNo private-link counterpart: access list or Network Area scopeRedesign
Virtual networkSTACKIT project networking or Network AreaReconfigure
SubnetSTACKIT network with the same IPv4 prefixReconfigure

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

  1. 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.

  2. Logins

    Logins are re-created as SQL logins on the new instance, and the run asks how administrators sign in.

  3. 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.

  4. 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.