关于 azuresql-db-faq
用于回答 Azure SQL Database 容器能力与故障排查问题的参考技能,避免将本地引擎与云服务或 SQL Server 混为一谈。面向处理支持和开发问题的 Agent,重点说明已验证行为、限制及注意事项。
主要功能
- 01区分引擎、云服务与 SQL Server 能力
- 02提供常见错误的验证答案
- 03说明变通方法与操作注意事项
- 04链接详细 FAQ 和限制参考
适用场景
- 01判断容器是否支持某项功能
- 02排查数据库切换或备份错误
- 03解释本地与云端行为差异
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ azure-sql-database-container --skill azuresql-db-faq安装后在 Claude Code 中输入/azuresql-db-faq确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.spec.jsoncreferences/faq.mdlimitations.md详细介绍
Azure SQL Database 容器:功能、限制及其原因
使用此技能准确回答“能不能做/为什么不能做/是否支持 X/与云端有何不同”等问题,而不是根据对通用 SQL Server 或 Azure SQL Database 的了解来猜测。基础模型并不了解此预览产品的具体情况,而坦诚的答案往往需要结合具体情形。
于 2026-09-19 针对容器镜像标签 18.0.226_4_147 重新测量,报告的 EngineEdition 为 5,Edition 为 SQL Azure,build 为 12.0.2000.8。此技能背后的七项可执行检查全部通过:引擎身份验证、BACKUP 和 RESTORE 的 Msg 40510、USE 的 Msg 40508、contained user 的 Msg 33233、SET CONTAINMENT = PARTIAL 的 Msg 12824,以及从本地文件执行 BULK INSERT 时的 Msg 12713。其中两个错误号在此前有误:此技能显示的是 Msg 15007 和 Msg 12844。这两条语句仍会被拒绝,因此答案没有变化,只有错误号变了。此技能汇总的差异列表依据已发布的 Known limitations 页面,而该页面会独立更新,因此在重申某项差异前,请先查看最新页面。
思维模型:引擎 vs. 托管服务 vs. SQL Server
此容器是在本地运行的 Azure SQL Database 引擎。它既不是托管云服务,也不是 SQL Server。几乎所有“是否支持 X”的问题都可以归入以下四类之一,答案也就一目了然:
- 引擎功能 -> 已提供。 T-SQL 方言、系统视图、
VECTOR类型和VECTOR_DISTANCE、Always Encrypted(基础功能)。SERVERPROPERTY('EngineEdition')返回5,Edition为'SQL Azure'。 - 托管服务功能 -> 不提供。 自动备份、时间点还原、异地复制、弹性池、超大规模、无服务器自动暂停、按数据库设置 DTU/vCore 上限、审计到云端,以及 Azure 门户 / CLI / ARM 管理。这些功能是在云端为引擎提供的托管服务;此容器只有引擎。
- 仅限 SQL Server 的功能 -> 有意不提供(Azure SQL Database 也不支持这些功能):SQL Agent 作业、FILESTREAM / FileTable、完整的跨实例 Service Broker、链接服务器、跨服务器分布式事务、Windows Authentication / NTLM。
- 此预览版中仍在完善的功能 -> 可用,但有注意事项: VS Code MSSQL
扩展 UI 和 SSMS,以及完整的 PaaS 限制强制执行机制仍在完善中。
CREATE VECTOR INDEX过去属于此类,但现在不再是:它已可用,Known limitations 页面也说明了这一点。见下文。
最常见问题(快速解答)
- “这个容器可以在 Azure/生产环境中运行吗?” 不可以。它用于本地开发循环(开发、测试、CI、演示),不是生产数据库。对于生产环境,请将相同代码部署到 Microsoft Azure 云中的 Azure SQL Database(外层循环),通常只需更改连接字符串。不要在 Azure 中运行此容器。
- “可以创建备份吗?” 不可以:在此容器的所有会话中,
BACKUP DATABASE和RESTORE DATABASE都会返回 Msg 40510(“此版本不支持”)。云中的 Azure SQL Database 同样不支持这些语句,因为备份由平台管理(而不是通过BACKUP语句运行)。若要在本地持久保存数据,请使用 Docker 命名卷(-v sqldb-data:/var/opt/mssql);若要使用托管备份、时间点还原或异地复制,请使用云中的 Azure SQL Database。 - “为什么
USE otherdb会因 Msg 40508 失败?” 因为连接到用户数据库时,会话遵循 Azure 的行为,与云中的 Azure SQL Database 一样会强制执行相同限制。请在连接字符串中选择数据库(Database=appdb),不要使用USE切换。(只有连接到master时,USE才“有效”;这种连接属于预配会话。) - “为什么必须先创建数据库才能连接?” 引擎不会在连接时自动创建数据库。请先通过连接到
master执行一次预配(CREATE DATABASE appdb),然后使用Database=appdb进行连接。 - “是否支持非 x64 主机?/是否有 ARM64 版本?” 此映像仅支持 x64;没有原生 ARM64 版本。在 ARM64 主机上,它会通过仿真运行:添加
--platform linux/amd64(Docker)或platform: linux/amd64(compose)。请称为“通过仿真运行”,切勿称为“支持 ARM64”,也不要承诺会提供原生版本或给出日期。若用户需要原生版本,请引导他们前往 https://aka.ms/azuresqldb-container-feature-request。 - “为什么无法执行
CREATE VECTOR INDEX?” 你很可能可以执行;这是文档与引擎行为不一致之处。Known limitations 页面仍将向量索引 DDL 列为待解决问题;但在此映像上实测,DiskANN 索引可以成功构建,VECTOR_SEARCH也会返回针对该索引排序的结果。有两种情况会导致语句失败:必须启用SET QUOTED_IDENTIFIER ON,而sqlcmd默认将其关闭(未启用时会出现 Msg 1934,错误文本中不会提到该设置);表中还必须至少有 100 行非空向量数据(少于此数量时会出现 Msg 42266)。索引建好后,该表上的TRUNCATE TABLE会被拒绝(Msg 42232),而DROP VECTOR INDEX并不是有效语句(请使用DROP INDEX name ON dbo.table)。对于小型表,全扫描 top-k 结果仍然准确,也仍是合适的选择。完整详情请参阅azuresql-db-rag技能。 - “是否支持 Microsoft Entra ID(Azure AD)身份验证?” 支持。请使用
MSSQL_AAD_CLIENT_ID、MSSQL_AAD_PRIMARY_TENANT和MSSQL_AAD_CERTIFICATE_FILE_PATH进行配置,并挂载.pfx文件(导出密码留空)。也可以设置MSSQL_AAD_SERVER_ADMIN_NAME、MSSQL_AAD_SERVER_ADMIN_TYPE(0= 用户,1= 组)和MSSQL_AAD_SERVER_ADMIN_SID,以便在启动时初始化 Entra 服务器管理员。SQL 身份验证(sa)仍是简单的本地默认方式。完整配置步骤请参阅azuresql-db-container技能;配置前请先打开其中的references/entra-auth.md文件。另请参阅入门:Microsoft Entra ID 身份验证。 - “为什么 SSMS/MSSQL 扩展会报错?” 图形化工具目前尚未实现 100% 兼容,相关问题正在修复。请使用
sqlcmd或驱动程序,它们目前可以正常工作;azuresql-db-container 技能中提供了命令行说明。MSSQL 扩展的 GitHub Copilot 集成功能也可正常使用(https://aka.ms/vscode-mssql-copilot-docs)。 - “为什么 Docker Hub/MCR 上没有此映像?” 这是仅面向容器的 Private Preview;映像存放在私有注册表中。注册参加 Private Preview 后,会在 https://aka.ms/sqldbcontainerpreview-signup 获取共用的只读拉取凭据(凭据可能会轮换)。
- “我的引擎缺少近期修复,或行为像较旧的版本。”
:latest是一个会变动的标签,但docker run会复用磁盘上已有的映像副本(Docker 默认的拉取策略为missing),因此你可能会在不知情的情况下继续使用旧版本。运行docker pull sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest检查是否有较新的版本,然后重新创建容器。请参阅azuresql-db-container技能中的映像参考。 - “查询在本地可以运行,在云中却失败。” 容器尚未强制执行某些 PaaS 限制,因此在云中无效的操作在本地可能会成功。在确认已准备就绪之前,请先对真实的 Azure SQL Database 验证一次(
azuresql-db-local-to-cloud技能可以预配目标数据库,以便进行一次性检查)。 - “为什么创建应用用户时,
CREATE USER ... WITH PASSWORD会失败?” 在容器中,SQL 包含用户会因 Msg 33233 而失败,而且无法启用包含功能:ALTER DATABASE ... SET CONTAINMENT = PARTIAL会因 Msg 12824 而失败,该错误要求设置此引擎中不存在的sp_configure选项。请改为创建服务器登录名和映射用户:先在master上执行CREATE LOGIN applogin WITH PASSWORD='...',然后在appdb上执行CREATE USER appuser FOR LOGIN applogin并授予角色。这与云端的做法相反(云端更推荐使用包含用户)。Entra CREATE USER ... FROM EXTERNAL PROVIDER可以正常工作,但前提是容器启动时已配置 Entra(MSSQL_AAD_*)。如果容器启动时未配置 Entra,则同一语句会因 Msg 33134 被拒绝,错误为“Principal '...' could not be resolved. Error message: 'Unable to query Azure AD certificate from local cert store.'”。完整配置步骤请参阅azuresql-db-auth技能。 当上方的快速解答未涵盖问题时,请打开 references/faq.md;当用户需要查看当前差距列表及解决方法时,请打开 references/limitations.md。
始终要做
- 根据此技能作答,不要依赖常规 SQL Server / Azure 知识。
- 如果问题涉及当前差距,请提供解决方法,并指向实时更新的列表:https://microsoft.github.io/azure-sql-database-container/known-limitations.html
- 区分“引擎不支持此功能”(确实存在的差距)、“托管云服务支持此功能,但引擎不支持”(设计如此)以及“SQL Server 支持此功能,但 Azure SQL Database 不支持”(有意不提供)。
- 如果此技能的答案有误、过时或缺失,这是此技能中的错误:加载 azuresql-db-feedback 技能,并主动提出提交报告。
绝不要做
- 绝不要声称容器支持托管服务功能(自动备份、PITR、异地复制、弹性池、门户管理)。
- 绝不要告诉用户非 x64 主机“受支持”;它是在模拟环境下运行。
- 绝不要声称容器支持
BACKUP DATABASE/RESTORE DATABASE;它们会返回 Msg 40510。(云端的 Azure SQL Database 同样不支持这些命令。)请使用 Docker 命名卷进行本地持久化。
验证规则
- 答案必须来自此技能,而非常规 SQL Server 或 Azure 知识。
- 答案必须明确说明所指的是容器、云端的 Azure SQL Database,还是 SQL Server。未说明对象的说法不算答案。
- 引用的任何错误号都必须出现在此技能或完整问题列表中;当快速解答未涵盖问题时,请打开完整问题列表。编造错误号比承认不知道更糟。
- 声称存在差距前,必须先对照实时限制页面进行核实,因为列表会变动,而此技能中保存的是快照。
- 对于非 x64 主机,答案必须说“在模拟环境下运行”,绝不能说“受支持”。
- 如果用户需要的是命令行而非解答,应将其交给负责该内容的技能,而不是在此提供操作步骤。
参考资料
- references/faq.md:按类别分组的完整问答列表,包含各项功能和差距背后的原因;当上方的快速解答未涵盖问题时,请阅读此文档。
- references/limitations.md:已知限制的离线快照(活跃问题、行为差距、范围之外的事项);当用户需要查看当前差距列表及解决方法时,请阅读此文档。
保持最新
此技能所用工具的权威版本固定参考资料(按需阅读):
- 连接并查询 Azure SQL Database:云服务的各语言快速入门、连接信息、TLS 和驱动程序。
- VECTOR 数据类型(T-SQL):VECTOR(n) 语法、限制和驱动程序支持。
如果已配置 Microsoft Learn MCP 服务,可使用 mcp__microsoft-learn__microsoft_docs_search 或 mcp__microsoft-learn__microsoft_docs_fetch 按需获取这些资料的最新版本。这是可选操作;如果无法使用,上述参考资料即为权威来源。