SuperAPI AI 工具集

azuresql-db-functions

编程与开发

查看项目

更新于 10-16 06:47

技能介绍

用途:在本地 Azure SQL Database 容器(Private Preview)上,用 Azure Functions 和一方 Azure SQL 绑定构建无服务器 HTTP API 与事件驱动处理程序。API 部分用 HTTP 触发器加 SQL 输入、输出绑定,无需 ADO.NET 样板代码即可读取与 upsert;事件驱动部分用 SQL 触发器绑定,在行插入、更新或删除时触发函数,底层是 Change Tracking,完全本地运行、无需云服务。事件驱动注意:Azure SQL Change Event Streaming(CES)是云端流式行变更路径,不能跑在本地容器上(Linux 引擎不支持,且只向 Azure Event Hubs 公共终结点流式发送),本地请用 SQL 触发器。

必要用法:镜像为 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest(x64,linux/amd64),注册表私有,先用 docker login sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io 并配合 https://aka.ms/sqldbcontainerpreview-signup 的只拉取凭据登录。必需环境变量 ACCEPT_EULA=Y 与复杂 MSSQL_SA_PASSWORD,引擎监听 1433。引擎不会自动创建数据库,须先在 master 连接上执行 CREATE DATABASE appdb,不要在连接串里用 USE 切换;非 x64 主机加 --platform linux/amd64。连接串放在应用设置中,名称用 SqlConnectionString,且需 TrustServerCertificate=true。.NET 隔离工作进程用 dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql;其他语言用 host.json 的扩展包。

限制:输出绑定要求目标表有主键(通过 MERGE upsert)且数据库兼容级别 130 以上(使用 OPENJSON)。SQL 触发器需在数据库和表上启用 Change Tracking:ALTER DATABASE appdb SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON); 与 ALTER TABLE dbo.ToDo ENABLE CHANGE_TRACKING;。工具列出的 SQL 触发器模板无法脚手架创建(func new --template SqlTrigger 报 Unknown template),请先建 HTTP 触发器再手写绑定。不要用 mcr.microsoft.com/mssql/server 镜像;不要期望函数应用创建 appdb;不要尝试让 CES 在本地工作;绑定关键字用 ConnectionStringSetting / connectionStringSetting,不要用 Connection;不要提交 local.settings.json,也不要在非 x64 主机上丢掉 --platform linux/amd64。