mcpField
A
azuresql-db-faq

azuresql-db-faq

github.com/microsoft数据与数据库2276 次安装1 周前更新
代码仓库

关于 azuresql-db-faq

用于回答 Azure SQL Database 容器能力与故障排查问题的参考技能,避免将本地引擎与云服务或 SQL Server 混为一谈。面向处理支持和开发问题的 Agent,重点说明已验证行为、限制及注意事项。

主要功能

  1. 01区分引擎、云服务与 SQL Server 能力
  2. 02提供常见错误的验证答案
  3. 03说明变通方法与操作注意事项
  4. 04链接详细 FAQ 和限制参考

适用场景

  1. 01判断容器是否支持某项功能
  2. 02排查数据库切换或备份错误
  3. 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.jsonc
references/
faq.md
limitations.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”的问题都可以归入以下四类之一,答案也就一目了然:

  1. 引擎功能 -> 已提供。 T-SQL 方言、系统视图、VECTOR 类型和 VECTOR_DISTANCE、Always Encrypted(基础功能)。 SERVERPROPERTY('EngineEdition') 返回 5,Edition 为 'SQL Azure'。
  2. 托管服务功能 -> 不提供。 自动备份、时间点还原、异地复制、弹性池、超大规模、无服务器自动暂停、按数据库设置 DTU/vCore 上限、审计到云端,以及 Azure 门户 / CLI / ARM 管理。这些功能是在云端为引擎提供的托管服务;此容器只有引擎。
  3. 仅限 SQL Server 的功能 -> 有意不提供(Azure SQL Database 也不支持这些功能):SQL Agent 作业、FILESTREAM / FileTable、完整的跨实例 Service Broker、链接服务器、跨服务器分布式事务、Windows Authentication / NTLM。
  4. 此预览版中仍在完善的功能 -> 可用,但有注意事项: 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:已知限制的离线快照(活跃问题、行为差距、范围之外的事项);当用户需要查看当前差距列表及解决方法时,请阅读此文档。

保持最新

此技能所用工具的权威版本固定参考资料(按需阅读):

如果已配置 Microsoft Learn MCP 服务,可使用 mcp__microsoft-learn__microsoft_docs_search 或 mcp__microsoft-learn__microsoft_docs_fetch 按需获取这些资料的最新版本。这是可选操作;如果无法使用,上述参考资料即为权威来源。

评论

支持 Markdown