用途:为新建应用(.NET Aspire、FastAPI、Next.js、NestJS)搭建以本地 Azure SQL Database 容器为默认开发数据库的项目骨架。该容器是 Azure SQL 引擎,而非 SQL Server 镜像。
必要用法与限制:
- 必须使用引擎镜像 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest,不可用 mcr.microsoft.com/mssql/server。镜像为 x64,非 x64 主机需加 --platform linux/amd64(Docker)或 platform: linux/amd64(compose)。镜像仓库为私有,需用预览计划的拉取凭据先 docker login。
- 引擎不会自动创建数据库;须在 master 连接上先 CREATE DATABASE appdb,再以 Database=appdb 连接。避免用 USE 切换数据库(用户库会话返回 Msg 40508),应在连接字符串中指定目标库。master 连接仅用于预配。
- 镜像不会自动执行 /docker-entrypoint-initdb.d/*.sql;预配 appdb 后再用 sqlcmd -d appdb -i seed.sql 播种。
- 需设置 ACCEPT_EULA=Y 与复杂 MSSQL_SA_PASSWORD(至少 8 位,含大写、小写、数字、符号中至少三类),引擎监听 1433。
- 应用读取环境变量 SQL_CONNECTION_STRING,形如 Server=localhost,1433;Database=appdb;User Id=sa;Password=$MSSQL_SA_PASSWORD;TrustServerCertificate=true;端口应使用实际分配的 HOST_PORT。sqlcmd 用 -C 信任自签名证书。
- 首次迁移由各栈迁移工具执行,如 Next.js/NestJS 用 npx prisma migrate dev --name init。
- 向量:支持 VECTOR(n) 与 VECTOR_DISTANCE('cosine', a, b),插入用 CAST(CAST(? AS NVARCHAR(MAX)) AS VECTOR(n)),维度 n 须为字面量而非绑定参数;CREATE VECTOR INDEX 需 SET QUOTED_IDENTIFIER ON 且至少 100 行非空向量。
验证规则:确认容器 EngineEdition 为 5;脚手架目标为引擎镜像;数据访问全部使用参数化查询。各栈具体片段见 references/scaffold-snippets.md。资料未提供各栈端到端执行验证结果。