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

如何使用Ballerina连接Azure SQL Database?连接重置错误求助

排查Ballerina连接Azure SQL Database的连接重置错误

我使用mssql Ballerina包(版本1.6.1)连接Azure SQL Database时,遇到如下连接重置错误:

错误信息

error: Error in SQL connector configuration: Failed to initialize pool: Connection reset ClientConnectionId:5d5b4f8b-7e6e-43d0-bce3-5fe79e403088 Caused by :Connection reset ClientConnectionId:5d5b4f8b-7e6e-43d0-bce3-5fe79e403088 Caused by :Connection reset
        at ballerinax.mssql.1:createClient(Client.bal:173)
           ballerinax.mssql.1:init(Client.bal:49)
           viggnah.test_apis.0.$anonType$_1:$get$test(testAPI.bal:45)

代码示例

import ballerina/sql;
import ballerina/http;
import ballerinax/mssql.driver as _;
import ballerinax/mssql;

configurable int servicePort = 9090;
configurable string user = "admin@my-server";
configurable string host = "my-server.database.windows.net";
configurable string database = "my-db";
configurable int dbPort = 1443;
configurable string password = "***";

service / on new http:Listener(servicePort) {
    
    resource function get test(string id) returns error? {
        mssql:Client|sql:Error dbClient = new(host=host, user=user, password=password, database=database, port=dbPort);
        if dbClient is error {
            return dbClient;
        }
    }
}

排查与解决方案

1. 修正数据库端口配置

Azure SQL Database的默认端口为1433,代码中配置的1443非标准端口,除非你在Azure上特意修改过端口,否则将dbPort改为1433。

2. 启用强制加密连接

Azure SQL要求所有连接必须使用SSL加密,Ballerina mssql客户端默认未启用该配置,需在创建mssql:Client时添加ssl=true参数:

mssql:Client|sql:Error dbClient = new(host=host, user=user, password=password, database=database, port=dbPort, ssl=true);

3. 检查Azure SQL防火墙规则

  • 登录Azure门户,进入目标SQL Database对应的服务器,确认防火墙规则中已添加Ballerina服务所在主机的公网IP地址,允许其访问1433端口。
  • 如果Ballerina服务运行在Azure内部(如App Service、VM),可启用“允许Azure服务和资源访问此服务器”选项。

4. 验证认证信息准确性

  • 确认用户名格式正确:应为[用户名]@[Azure SQL服务器名称],服务器名称需与Azure门户上的完全一致(如my-server.database.windows.net去掉后缀,仅用my-server)。
  • 验证密码、数据库名称无拼写错误,且该用户拥有目标数据库的访问权限。

5. 检查包版本兼容性

  • 确认当前使用的Ballerina版本与mssql 1.6.1包兼容,若存在版本冲突,尝试升级mssql包至最新稳定版,修复已知的连接问题。

修正后的完整代码

import ballerina/sql;
import ballerina/http;
import ballerinax/mssql.driver as _;
import ballerinax/mssql;

configurable int servicePort = 9090;
configurable string user = "admin@my-server";
configurable string host = "my-server.database.windows.net";
configurable string database = "my-db";
configurable int dbPort = 1433;
configurable string password = "***";

service / on new http:Listener(servicePort) {
    
    resource function get test(string id) returns error? {
        mssql:Client|sql:Error dbClient = new(host=host, user=user, password=password, database=database, port=dbPort, ssl=true);
        if dbClient is error {
            return dbClient;
        }
        // 使用完毕后关闭客户端,避免连接泄漏
        check dbClient.close();
        return;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:21