You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions隔离工作器模型SQL输入绑定运行时不识别问题

问题解答

1. 是否更适合使用进程内模型?

  • 虽然进程内模型明年将被弃用,若当前SQL绑定的隔离模型文档存在不符问题,短期可临时用进程内模型过渡,但不建议长期依赖——微软未来的功能更新与技术支持会集中在隔离工作器模型,长期来看适配隔离模型才是更稳妥的选择。

2. 隔离模型下的代码修正步骤

(1)确认依赖包正确

确保项目引用隔离模型对应的SQL绑定包:

<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Sql" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.4" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.1" />

(2)替换FunctionName特性

隔离模型无需Microsoft.Azure.WebJobs包的FunctionName,改用Microsoft.Azure.Functions.Worker命名空间下的[Function]特性定义函数名:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Net;

namespace YourFunctionNamespace;

public class SqlInputFunction
{
    private readonly ILogger _logger;

    public SqlInputFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<SqlInputFunction>();
    }

    // 用[Function]替代FunctionName
    [Function("SqlInputHttpTrigger")]
    public HttpResponseData Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req,
        // SQL输入绑定配置
        [SqlInput("SELECT * FROM YourTable", CommandType = System.Data.CommandType.Text, ConnectionStringSetting = "SqlConnection")] IEnumerable<YourTableModel> items)
    {
        _logger.LogInformation("SQL输入绑定返回了 {Count} 条数据", items.Count());

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.WriteAsJsonAsync(items).Wait();
        return response;
    }
}

// 数据库表对应的模型类
public class YourTableModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    // 其他字段对应表结构
}

(3)配置Key Vault连接字符串

在local.settings.json中配置Key Vault引用,让函数获取数据库连接字符串:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    // 引用Key Vault中的连接字符串密钥
    "SqlConnection": "@Microsoft.KeyVault(SecretUri=https://your-keyvault.vault.azure.net/secrets/sql-connection-string/)"
  }
}

同时确保本地开发环境已通过az login登录Azure,且当前账号拥有访问该Key Vault的权限。

(4)检查host.json配置

确保host.json中启用SQL绑定扩展:

{
  "version": "2.0",
  "extensions": {
    "sql": {
      "commandTimeout": "00:05:00",
      "connectionStringSetting": "SqlConnection"
    }
  }
}

(5)验证本地数据库连通性

用Key Vault中存储的连接字符串,通过SQL Server Management Studio等工具测试本地数据库的连通性,确保网络与权限无问题。


内容的提问来源于stack exchange,提问作者Alnewber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:16:02