用途:为应用配置针对 Azure SQL 引擎(Private Preview 容器)的可靠数据库连接,重点是连接池复用与瞬态故障重试,使得本地开发代码无需改写即可在云端 Azure SQL Database 上工作。注意使用的是 Azure SQL 引擎镜像,而非 SQL Server 镜像。
主要能力:连接池配置(保持连接复用、设置 Max Pool Size 上限、Min Pool Size 预热、连接用后释放);仅针对瞬态错误的重试(如 40501 限流、40613 数据库不可用、49918/49919/49920 繁忙、4060、10928、10929、40197、233 及连接超时/管道中断),采用带上限和抖动的指数退避与有限次尝试;针对非幂等写入,建议客户端生成键、MERGE 或可整体重试的事务。
必要用法:镜像为 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest,需先 docker login;非 x64 主机加 --platform linux/amd64。必需环境变量 ACCEPT_EULA=Y 和 MSSQL_SA_PASSWORD,端口 1433。引擎不自动建库,需先在 master 连接执行 CREATE DATABASE appdb;不要用 USE 切换数据库(用户库会话返回 Msg 40508),应在连接串中用 Database=appdb 指定。应用只读取一个环境变量 SQL_CONNECTION_STRING,字符串使用 User Id= / Password= / Database= 和 TrustServerCertificate=true;sqlcmd 使用 -C。
验证规则:重试仅作用于瞬态错误,非瞬态错误(认证、语法、约束)立即暴露;重试有尝试上限并采用指数退避;非幂等写入需可安全重跑;连接池开启且 Max Pool Size 有上限;连接释放归还池,不每查询新开;单一连接串、单一池。
限制:该容器不携带云端的限流遥测,sys.dm_db_resource_stats 与 sys.dm_user_db_resource_governance 在此引擎中不存在,不能据此写本地限流诊断,也不能据此推断云端不限流。不要使用 mcr.microsoft.com/mssql/server 镜像。最低工具版本:go-sqlcmd 1.10.0、.NET SDK 8.0.421。其他细节暂未提供。