microsoft/azuresql-db-faq
>- Answers questions about what Azure SQL Developer (Private Preview) can and cannot do, and WHY it differs from Azure SQL Database in the Microsoft Azure cloud. Use when a user asks "can I take a backup", "why does USE fail", "is X supported", "why can't I create a vector index", "why does SSMS error", "why isn't the image on Docker Hub", "what's different from the cloud", or hits behavior that does not match their Azure SQL Database expectations. Do NOT guess product with specific gaps and a specific connection model. Read this skill, and link the user to the live Known limitations page for the current full list.
npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-faq
Use this skill to answer "can I / why can't I / is X supported / what's different
from the cloud" questions accurately, instead of guessing from general SQL Server
or Azure SQL Database knowledge. A base model does not know this preview product's
specifics, and the honest answers are often nuanced.
The container is the Azure SQL Database engine, running locally. It is not the
managed cloud service, and it is not the SQL Server. Sort almost any
"is X supported" question into one of four buckets and the answer follows:
VECTOR type andVECTOR_DISTANCE, Always Encrypted (basic).
SERVERPROPERTY('EngineEdition') returns 5, Edition is 'SQL Azure'.
restore, geo-replication, elastic pools, hyperscale, serverless auto-pause,
per-database DTU/vCore caps, audit-to-cloud, and Azure portal / CLI / ARM
management. These wrap the engine in the cloud; the container is only the engine.
SQL Database either): SQL Agent jobs, FILESTREAM / FileTable, full cross-instance
Service Broker, linked servers, cross-server distributed transactions, Windows
Authentication / NTLM.
CREATE VECTOR INDEXDDL, the VS Code MSSQL extension UI and SSMS, and full PaaS restriction
enforcement are still being completed.
BACKUP DATABASE and RESTORE DATABASE return Msg 40510 ("not supported in this version") on the container, in every session. Azure SQL Database in the cloud likewise does not support them, because backups there are managed by the platform (not run with the BACKUP statement). For local data persistence, use a Docker named volume (-v sqldb-data:/var/opt/mssql); for managed backups, point-in-time restore, or geo-replication, use Azure SQL Database in the cloud.USE otherdb fail with Msg 40508?" Because a connection to a user database is an Azure-faithful (SDS) session that enforces the same restriction as Azure SQL Database in the cloud. Select the database in the connection string (Database=appdb), do not switch with USE. (USE "works" only on a master connection, which is a non-SDS provisioning session.)master connection (CREATE DATABASE appdb), then connect with Database=appdb.--platform linux/amd64 (Docker) or platform: linux/amd64 (compose). Say "runs under emulation", never "ARM64 is supported", and do not promise a native build or a date. If the user wants one, point them at https://aka.ms/azuresql-developer-feature-request.CREATE VECTOR INDEX?" That DDL is still in development. The VECTOR type and VECTOR_DISTANCE work today; use a full-scan top-k query for now (fine for prototype-sized corpora).MSSQL_AAD_CLIENT_ID, MSSQL_AAD_PRIMARY_TENANT, and MSSQL_AAD_CERTIFICATE_FILE_PATH plus a mounted .pfx (empty export password). Optionally set MSSQL_AAD_SERVER_ADMIN_NAME, MSSQL_AAD_SERVER_ADMIN_TYPE (0 = user, 1 = group), and MSSQL_AAD_SERVER_ADMIN_SID to bootstrap an Entra server admin at start. SQL auth (sa) remains the simple local default. Full recipe: the azuresql-db-container skill (references/entra-auth.md). Also see Getting started: Microsoft Entra ID authentication.sqlcmd or a driver, which work today. The MSSQL extension's GitHub Copilot integration also works (https://aka.ms/vscode-mssql-copilot-docs).:latest is a moving tag and the image is rebuilt almost daily, but docker run reuses the copy already on disk (Docker's default pull policy is missing), so you can silently stay on a stale build. Refresh with docker pull sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest, then recreate the container. See the azuresql-db-container skill's image reference.azuresql-db-local-to-cloud skill can provision a target for a one-shot check).CREATE USER ... WITH PASSWORD fail when I make an app user?" On the container a SQL contained user fails (Msg 15007), and ALTER DATABASE ... SET CONTAINMENT = PARTIAL fails too (Msg 12824). Create a server login plus a mapped user instead: CREATE LOGIN applogin WITH PASSWORD='...' on master, then CREATE USER appuser FOR LOGIN applogin + role grants on appdb. This is inverted from the cloud (where contained users are preferred). Entra CREATE USER ... FROM EXTERNAL PROVIDER does work. Full recipe: the azuresql-db-auth skill.More entries with the full "why" are in references/faq.md, and the
limitations list (kept in step with the docs) is in references/limitations.md.
live, always-current list: https://microsoft.github.io/azure-sql-database-container/known-limitations.html
service does this, the engine does not" (by design) from "the SQL Server does
this, Azure SQL Database does not" (intentionally absent).
elastic pools, portal management) exists on the container.
BACKUP DATABASE / RESTORE DATABASE work on the container; they return Msg 40510. (Azure SQL Database in the cloud likewise does not support them.) Use a Docker named volume for local persistence.Authoritative, version-pinned references for the tools this skill uses (read the one you need):
If the Microsoft Learn MCP server is configured, use mcp__microsoft-learn__microsoft_docs_search or mcp__microsoft-learn__microsoft_docs_fetch to fetch the current version of any of these on demand. It is optional; when it is unavailable, the references above are authoritative.
Take microsoft/azuresql-db-faq from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference docker.
Without those the skill loads but fails at the first command.