
azuresql-db-faq
Answers questions about what the Azure SQL Database container (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 from general SQL Server / Azure knowledge: the container is a Private Preview 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.
- Installs
- 75
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-faq- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads azuresql-db-faq automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
The Azure SQL Database container: capabilities, limits, and why
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.
Re-measured on 2026-09-19 against the container image tag 18.0.226_4_147, reporting
EngineEdition 5, Edition SQL Azure, build 12.0.2000.8. All seven executable checks
behind this skill pass: the engine identity, Msg 40510 for BACKUP and for RESTORE,
Msg 40508 for USE, Msg 33233 for a contained user, Msg 12824 for SET CONTAINMENT = PARTIAL, and Msg 12713 for BULK INSERT from a local file. Two of those numbers were
wrong before that date: this skill printed Msg 15007 and Msg 12844. Both statements
are still refused, so the answers are unchanged and only the numbers are. The gap list this skill summarises tracks the
published Known limitations page, which moves independently of that run, so read the live page
before repeating a gap claim.
The mental model: engine vs. managed service vs. SQL Server
The container is the Azure SQL Database engine, running locally. It is not the managed cloud service, and it is not SQL Server. Sort almost any "is X supported" question into one of four buckets and the answer follows:
- Engine features -> present. T-SQL dialect, system views,
VECTORtype andVECTOR_DISTANCE, Always Encrypted (basic).SERVERPROPERTY('EngineEdition')returns5,Editionis'SQL Azure'. - Managed-service features -> NOT present. Automated backups, point-in-time 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 Server-only features -> intentionally absent (they are not in Azure SQL Database either): SQL Agent jobs, FILESTREAM / FileTable, full cross-instance Service Broker, linked servers, cross-server distributed transactions, Windows Authentication / NTLM.
- In-progress in this preview -> works with a caveat: the VS Code MSSQL
extension UI and SSMS, and full PaaS restriction enforcement, are still being
completed.
CREATE VECTOR INDEXused to belong here and no longer does: it works, and the Known limitations page says so. See below.
Most-asked questions (quick answers)
- "Can I run this container in Azure / in production?" No. It is your local inner loop (development, testing, CI, demos), not a production database. For production, deploy the same code to Azure SQL Database in the Microsoft Azure cloud (the outer loop), usually by changing only the connection string. You do not run this container in Azure.
- "Can I take a backup?" No:
BACKUP DATABASEandRESTORE DATABASEreturn 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 theBACKUPstatement). 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. - "Why does
USE otherdbfail with Msg 40508?" Because a connection to a user database is an Azure-faithful 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 withUSE. (USE"works" only on amasterconnection, which is a provisioning session.) - "Why does connecting fail until I create the database?" The engine does not auto-create databases on connect. Provision once on a
masterconnection (CREATE DATABASE appdb), then connect withDatabase=appdb. - "Is ARM64 supported? / Is there an ARM64 build?" Yes. The image supports native
linux/amd64andlinux/arm64, and the runtime selects the matching architecture. Use--platform linux/amd64(Docker) orplatform: linux/amd64(Compose) only to explicitly test x64 emulation. - "Why can't I
CREATE VECTOR INDEX?" You probably can, and this is a place where the documentation and the engine disagree. The Known limitations page still lists vector index DDL as an active issue; measured on this image, the DiskANN index builds andVECTOR_SEARCHreturns ranked results against it. Two things stop the statement:SET QUOTED_IDENTIFIER ONis required and is off by default insqlcmd(without it, Msg 1934, whose text never names the setting), and the table needs at least 100 rows with non-null vectors (below that, Msg 42266). Once the index exists,TRUNCATE TABLEon that table is refused (Msg 42232) andDROP VECTOR INDEXis not a statement (useDROP INDEX name ON dbo.table). Full-scan top-k stays exact and stays the right choice for a small table. Full detail: theazuresql-db-ragskill. - "Is Microsoft Entra ID (Azure AD) authentication supported?" Yes. Configure it with
MSSQL_AAD_CLIENT_ID,MSSQL_AAD_PRIMARY_TENANT, andMSSQL_AAD_CERTIFICATE_FILE_PATHplus a mounted.pfx(empty export password). Optionally setMSSQL_AAD_SERVER_ADMIN_NAME,MSSQL_AAD_SERVER_ADMIN_TYPE(0= user,1= group), andMSSQL_AAD_SERVER_ADMIN_SIDto bootstrap an Entra server admin at start. SQL auth (sa) remains the simple local default. Full recipe: theazuresql-db-containerskill, whosereferences/entra-auth.mdis the file to open before you configure any of this. Also see Getting started: Microsoft Entra ID authentication. - "Why does SSMS / the MSSQL extension throw errors?" Graphical tooling is not yet 100% compatible; it is being fixed. Use
sqlcmdor a driver, which work today; the azuresql-db-container skill has the command line. The MSSQL extension's GitHub Copilot integration also works (https://aka.ms/vscode-mssql-copilot-docs). - "Why isn't the image on Docker Hub / MCR?" This is a container-only Private Preview; the image is in a private registry with shared pull-only credentials provided when you sign up for the Private Preview at https://aka.ms/sqldbcontainerpreview-signup (they may rotate).
- "My engine is missing a recent fix, or behaves like an older build."
:latestis a moving tag, butdocker runreuses the copy already on disk (Docker's default pull policy ismissing), so you can silently stay on a stale build. Pull withdocker pull sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latestto check for a newer build, then recreate the container. See theazuresql-db-containerskill's image reference. - "My query works locally but fails in the cloud." Some PaaS restrictions are not yet enforced by the container, so something invalid in the cloud can succeed locally. Validate against a real Azure SQL Database once before declaring readiness (the
azuresql-db-local-to-cloudskill can provision a target for a one-shot check). - "Why does
CREATE USER ... WITH PASSWORDfail when I make an app user?" On the container a SQL contained user fails with Msg 33233, and you cannot turn containment on:ALTER DATABASE ... SET CONTAINMENT = PARTIALfails with Msg 12824, which asks for ansp_configuresetting that this engine does not have. Create a server login plus a mapped user instead:CREATE LOGIN applogin WITH PASSWORD='...'onmaster, thenCREATE USER appuser FOR LOGIN applogin+ role grants onappdb. This is inverted from the cloud (where contained users are preferred). EntraCREATE USER ... FROM EXTERNAL PROVIDERdoes work, but only on a container started with Entra configured (MSSQL_AAD_*). Against a container started without it the same statement is refused with Msg 33134, "Principal '...' could not be resolved. Error message: 'Unable to query Azure AD certificate from local cert store.'" Full recipe: theazuresql-db-authskill.
Open references/faq.md when the quick answers above do not cover the question, and references/limitations.md when the user needs the current gap list with a workaround.
Always do
- Answer from this skill, not from general SQL Server / Azure knowledge.
- When the question is about a current gap, give the workaround and point to the live, always-current list: https://microsoft.github.io/azure-sql-database-container/known-limitations.html
- Distinguish "the engine does not do this" (a real gap) from "the managed cloud service does this, the engine does not" (by design) from "SQL Server does this, Azure SQL Database does not" (intentionally absent).
- If this skill's answer was wrong, outdated, or missing, that is a bug in this skill: load the azuresql-db-feedback skill and offer to file a report.
Never do
- Never claim a managed-service feature (automated backup, PITR, geo-replication, elastic pools, portal management) exists on the container.
- Do not describe native ARM64 as emulation; only an explicit
linux/amd64override on ARM64 runs under emulation. - Never claim
BACKUP DATABASE/RESTORE DATABASEwork 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.
Validation rules
- The answer came from this skill, not from general SQL Server or Azure knowledge.
- The answer names which of the three it is talking about: the container, Azure SQL Database in the cloud, or SQL Server. A claim that does not say which one is not an answer.
- Any error number quoted appears in this skill, or in the full question list, which you open when the quick answers do not cover it. An invented message number is worse than saying you do not know.
- A gap claim was checked against the live limitations page before it was stated, since that list moves and this skill carries a snapshot.
- The answer states that ARM64 is supported natively and mentions emulation only for an explicit platform override.
- If the question needed a command line rather than an answer, the user was handed to the skill that owns it rather than given a recipe from here.
References
- references/faq.md: the full question-and-answer list with the "why" behind each capability and gap, grouped by bucket; read it when the quick answers above do not cover the question.
- references/limitations.md: an offline snapshot of the known limitations (active issues, behavior gaps, out-of-scope items); read it when the user needs the current gap list and a workaround.
Staying current
Authoritative, version-pinned references for the tools this skill uses (read the one you need):
- Connect and query Azure SQL Database: per-language quickstarts, connection info, TLS, and drivers for the cloud service.
- VECTOR data type (T-SQL): VECTOR(n) syntax, limits, and driver support.
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.
FAQ
What does the azuresql-db-faq skill do?
Answers questions about what the Azure SQL Database container (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 from general SQL Server / Azure knowledge: the container is a Private Preview 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.
How do I install azuresql-db-faq?
Run npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-faq in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/azuresql-db-faq/ (personal) or .claude/skills/azuresql-db-faq/ (project).
Which AI agents can use azuresql-db-faq?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is azuresql-db-faq safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains azuresql-db-faq?
It is published by microsoft in microsoft/azure-sql-database-container. It has 75 recorded installs.
More from microsoft/azure-sql-database-container
azuresql-db-container
microsoft/azure-sql-database-container
Runs the Azure SQL Database container locally (Private Preview): the real PaaS engine where SERVERPROPERTY('EngineEdition') returns 5. This is NOT the SQL Server image mcr.microsoft.com/mssql/server. Use when a user wants to "run Azure SQL locally", "add a local SQL database", "add SQL Server to my docker compose", "spin up a local mssql container", "local SQL for development or CI", "connect with sqlcmd", "use Podman for SQL", "SQL container won't start", "Microsoft Entra authentication on the container", "MSSQLAADCLIENTID", or asks "what's the connection string". Use even when the user does not name the container. If you were about to use mcr.microsoft.com/mssql/server, stop and use this skill instead. Hub skill: owns the shared references and routes to the task skills for compose, CI, seeding, vectors, and connection strings.
azuresql-db-schema-migration
microsoft/azure-sql-database-container
Runs database schema migrations against the local Azure SQL Database container so the same migrations apply identically on the local engine and in the Azure cloud. Use when asked to "run my migrations against the local SQL", "apply schema to the container", "apply EF Core / dotnet ef database update", "Prisma migrate dev / deploy", "Alembic upgrade head", or deploy a DACPAC / SqlPackage to the container. Covers provisioning appdb on master first, then applying schema to the user database, plus per-tool commands and connection-string hygiene. This is the Azure SQL Database engine (EngineEdition 5), not the SQL Server image; reach for this skill whenever schema migration tooling targets the local container.
azuresql-db-ci
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-local-to-cloud
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-scaffold
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-rag
microsoft/azure-sql-database-container
Builds local vector search, RAG, embeddings, and semantic search on the Azure SQL Database container using the native VECTOR type and VECTORDISTANCE. Use when you need to store embeddings, do similarity search, top-k nearest neighbor, cosine distance, retrieval-augmented generation, "find similar documents", chatbot memory, or semantic lookup against a local SQL database. Use this instead of pgvector, FAISS, Chroma, Pinecone, or a separate vector store when the data already lives in (or can live in) Azure SQL. Covers the VECTOR(n) column type, inserting embeddings with CAST(CAST(? AS NVARCHAR(MAX)) AS VECTOR(n)) where the dimension is a literal, a pluggable embed() so only the endpoint changes for cloud, and a working CREATE VECTOR INDEX with the two errors that block it. Provisions appdb on master first so every script runs on a fresh container.
Popular data & databases skills
supabase-postgres-best-practices
supabase/agent-skills
Postgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pgcron, pgmq), vector/semantic search (pgvector), and restoring dumps (pgrestore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.
prisma-client-api
prisma/skills
Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client. Triggers on "prisma query", "findMany", "create", "update", "delete", "$transaction".
prisma-database-setup
prisma/skills
Deprecated compatibility name for prisma-orm-setup. Use only when a user or existing integration explicitly invokes prisma-database-setup; otherwise select prisma-orm-setup.
prisma-cli
prisma/skills
Prisma ORM 7 CLI reference for existing Prisma 7 applications or explicitly selected Prisma 7 workflows. Covers prisma init, generate, migrate, db, dev, studio, and mcp. For setup, connection repair, or Prisma 8, use prisma-orm-setup; not the Prisma Platform CLI.
prisma-postgres
prisma/skills
Deprecated compatibility name for prisma-postgres-setup. Use only when a user or existing integration explicitly invokes prisma-postgres; otherwise select prisma-postgres-setup.
prisma-driver-adapter-implementation
prisma/skills
Required reference for Prisma ORM 7 SQL driver adapter work. Use when implementing or modifying adapters, adding database drivers, or touching SqlDriverAdapter, Transaction, savepoint, result mapping, or DriverAdapterError behavior. Covers current transaction lifecycle, optional savepoint hooks, original database-error preservation, and verification.