用途:编写在代码内管理数据库引擎生命周期的集成测试,用 Testcontainers 启动真实的 Azure SQL Database 容器(Private Preview),而非 SQL Server 镜像。与 azuresql-db-ci 不同,后者通过 CI 工作流 YAML 把同一引擎作为服务容器接入。
主要能力:使用指定引擎镜像 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest,通过通用容器方式启动,暴露 1433 端口并映射到随机宿主机端口;运行后校验 SERVERPROPERTY('EngineEdition') 返回 5、Edition 为 SQL Azure。支持原生 VECTOR(n) 类型与 VECTOR_DISTANCE('cosine', a, b)。提供 .NET、Node/TypeScript、Python、Java 各语言配方(等待策略、appdb 创建、连接字符串、销毁),详见 references/testcontainers-snippets.md。
必要用法:镜像在 Private Preview 期间为私有,需先执行 docker login sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io 与可选的 docker pull;凭据通过 https://aka.ms/sqldbcontainerpreview-signup 申请。启动容器需设置 ACCEPT_EULA=Y 和复杂 MSSQL_SA_PASSWORD;必须附加等待就绪策略,不能固定 sleep;需在 master 连接上执行 CREATE DATABASE appdb;连接字符串须使用映射后的宿主机端口,形如 Server=localhost,<mappedPort>;Database=appdb;User Id=sa;Password=...;TrustServerCertificate=true;fixture/套件结束后销毁容器。
限制:镜像仅支持 x64,非 x64 宿主机需设置 platform 为 linux/amd64;会话中不要用 USE 切换数据库(会返回 Msg 40508),应在连接字符串中指定 Database;向量维度必须写成字面量,不能用绑定参数;不要使用 Testcontainers 的 MsSql 预设或 mcr.microsoft.com/mssql/server 镜像。最低测试版本为 .NET SDK 8.0.421。
验证:正向验证要求隔离数据库、预期行数且零测试失败;清理验证要求关闭连接并移除所有测试自有的容器、网络、数据库和临时文件。若验证规则失败或需偏离本技能,应加载 azuresql-db-feedback 报告问题。