Today, I am providing an update on the supported configurations of Azure SQL Edge, the version of SQL Server geared for IoT and IoT Edge deployments built on the latest versions of the SQL Server Database Engine.
The following changes are effective immediately:
- Azure SQL Edge is no longer available as an IoT module for deployment in Azure China
- Azure SQL Edge based on ARM64 architecture is retired
Motivation
The motivation behind these two updates is simple: we are listening to where and how our customers are using Azure SQL Edge.
In discussions with customers and hardware partners, we see that SQL Edge on AMD64 is the architecture of choice for production deployments and developers on Windows. SQL Edge on ARM64 has been primarily popular with developers writing SQL Server applications on Apple hardware with M1 and M2 chipsets because SQL Edge has, until recently, been the only version of SQL Server that will run in containers on Apple M1/M2 silicon.
SQL Server on Apple Silicon
Apple switched their MacBook and iMac product lines from Intel to ARM based processors in 2020 with the introduction of the M1 chipset. Multiple attempts have been made to bridge the gap between Intel and Apple silicon and allow Intel-based apps to continue working in macOS, including binary translators like Rosetta 2 and open source x86-64 emulators like QEMU. While these solutions work for most software, up until recently the AMD64 based SQL Server running as a container in Docker Desktop would not run on Apple silicon. That’s left SQL Edge as the only choice for local SQL Server development on M1 and M2 based macOS.
Azure SQL Edge has close fidelity to SQL Server and Azure SQL Database, the ability to run on Apple silicon, and a minimal footprint making it well suited for most tasks when developing for SQL Server on macOS, either as a standalone container or when used with the Azure SQL Database emulator.
However, using Azure SQL Edge does have some drawbacks. First, you cannot develop against a specific SQL Server 2017/2019/2022 version with Azure SQL Edge. Second, SQL Edge’s unsupported features impose a limit on some scenarios, including: In-Memory OLTP, CLR, and CLR based data types.
Docker Desktop for macOS v4.16 introduced a beta feature that leverages Apple’s new Virtualization Framework and Rosetta 2 to run x86-64 based containers. With this feature, you can now run AMD64 based SQL Server containers of your choice.
You can try this out for yourself today by following this detailed walkthrough provided by Drew Skwiers-Koballa, Senior Program Manager on our SQL Experiences team here at Microsoft. You can also track the status of Docker’s support for running x86-64 binaries with Rosetta 2 via this roadmap issue on GitHub
Roadmap
For production deployment scenarios, you will no longer be able to deploy Azure SQL Edge ARM64 modules from the Azure Marketplace. We are continuing to build and support containers and modules running on AMD64.
We are leaving the ARM64 container available in the Microsoft Container Registry as-is for developers who want to continue using this image. Since SQL Edge ARM64 is now retired, we will not publish any updates, and no technical support will be provided for this container image.
Leveraging Docker Desktop support for x86/amd64 emulation is our recommendation for local SQL Server development on Apple silicon going forward, as this gives you the flexibility to run SQL 2017/2019/2022 and Azure SQL Edge AMD64 containers.
We will publish an update to the SQL Database Projects extensions for Azure Data Studio and VS Code in the future that enables the Azure SQL Database emulator only through the SQL Server container images.