Skip to content

Architecture

SQLServer Flex is a fully managed database service on the STACKIT platform that provides Microsoft SQL Server instances on dedicated virtual machines. This design ensures isolation and prevents “noisy neighbor” problems. STACKIT handles provisioning, operation, high availability, monitoring and backups.

An instance is defined by its type, computing power, memory, underlying storage and networking. You can learn more about them in Create your first instance of SQLServer Flex and connect to it.

At the instance level, you define how many nodes your SQL Server runs on. The service plan determines whether your instance is a single-node setup or a high-availability cluster.

  • The General Purpose plan runs on one node and is mainly suited for development and testing.
  • The Business Critical plan uses three nodes configured as an Always On availability group. This setup provides production-grade resilience by ensuring that all three nodes mirror the database and automatically handle failovers.

Each SQLServer Flex instance is defined by a plan. A plan bundles a specific number of virtual CPUs, a given memory size, and a small system disk. Depending on the instance type, different plans are available.

The selected plan determines the maximum workload your SQL Server can handle. Vertical scaling is achieved by moving to a larger plan. Changing the plan requires a restart of the instance and thus a short downtime.

Database storage is provisioned separately from the compute plan. Storage has two architectural dimensions:

  • Capacity: defines how much data can be stored. Capacity can be increased at any time without downtime.
  • Performance class: defines IOPS and throughput limits. Higher classes provide more bandwidth and lower latency.

By design, 75% of the allocated storage is reserved for data, while 25% is reserved for transaction logs.

Each instance has its own hostname and IPv4 adress. Per default it only can be reached from pre-defined STACKIT address ranges. With the ACL paramenter, you can add custom IPv4 single addresses and ranges from which the instance can be reached.

SQLServer Flex supports both automated and on-demand backups. The platform automatically creates a backup once per day for every database in your instance. In addition, you can trigger your own backups at any time through the portal or the API.

To create a backup manually, you need a service user with the permission sqlserver-flex.backup.trigger. This permission is included in the roles SQLServer Flex Admin and SQLServer Flex Editor. Once triggered, a backup is listed under the “Backups” section for the corresponding database.

Restoring a database works in a similar way. You need the permission sqlserver-flex.restore.trigger, included in the SQLServer Flex Admin and SQLServer Flex Editor roles. A database can only be restored if it does not currently exist. If the target database already exists, it must be deleted first. From the portal you select the backup you want to restore and start the restore process. Optionally, you can specify a point in time to recover to. After confirmation, the database will be recreated from the backup. The restored database appears in the database overview once the operation completes.