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

求助:使用Google Apps Script与JDBC无法连接本地Microsoft SQL Server

Google Apps Script JDBC连接本地MS-SQL Server失败的解决方案

你遇到的Exception: Failed to establish a database connection. Check connection string, username and password.错误,大概率是网络配置、连接字符串格式或SQL Server设置问题导致的,以下是针对性排查和修复步骤:

1. 解决网络可达性问题

Google Apps Script运行在谷歌云端,本地SQL Server默认只允许内网访问,云端无法直接连接:

  • 给路由器设置端口转发:把外部7990端口映射到本地运行SQL Server的机器内网IP(比如192.168.x.x)的7990端口
  • 关闭本地防火墙的7990端口入站限制,或者添加允许外部访问该端口的规则
  • 用telnet 你的公网IP 7990测试端口是否开放,确保云端能连通

2. 修正JDBC连接字符串格式

MS SQL Server的JDBC连接字符串不支持用/拼接数据库名,正确格式需要用;databaseName=参数:

// 错误格式:用/分隔数据库
// let url = "jdbc:sqlserver://"+HostName+":"+Port+"/"+DatabaseName;

// 正确格式
let url = "jdbc:sqlserver://"+HostName+":"+Port+";databaseName="+DatabaseName;

3. 检查SQL Server核心配置

  • 启用TCP/IP协议:打开SQL Server配置管理器 → SQL Server网络配置 → 选择对应实例的协议 → 启用TCP/IP,在「IP地址」标签里设置监听端口为7990
  • 切换身份验证模式:确保SQL Server设置为混合身份验证模式(SQL Server + Windows),纯Windows身份验证下SQL账号无法远程登录
  • 验证账号权限:用william账号在本地SSMS登录,确认能正常访问my_base数据库,且账号拥有远程访问权限

4. 确认账号密码有效性

  • 检查密码是否正确,若包含特殊字符(如&、=),需进行URL编码后再填入
  • 本地用SSMS测试william账号登录,排除账号本身的问题

修复后的完整代码

function getConnection() 
{
    let HostName = "你的公网IP"; // 替换成本地机器的公网IP,不要用内网IP
    let DatabaseName = "my_base";
    let Username = "william";
    let Password = "你的密码";
    let Port = "7990";
    let url = "jdbc:sqlserver://"+HostName+":"+Port+";databaseName="+DatabaseName;
    
    try {
        let connection = Jdbc.getConnection(url, Username, Password);
        Logger.log("连接成功:" + connection);
        connection.close();
    } catch(e) {
        Logger.log("连接失败详情:" + e.message);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:31