通过JDBC使用Google Apps脚本连接到MSSQL Server时出错

时间:2013-09-24 09:57:22

标签: sql-server jdbc google-apps-script

我正在尝试使用Google Apps脚本连接到Microsoft SQL Server。我正在使用SQL Server 2008 R2,我正在使用一个建议的脚本,它应该读取数据并将其放入电子表格中: https://developers.google.com/apps-script/jdbc#reading_from_a_database

错误消息是:

  

无法建立数据库连接。检查连接字符串,用户名和密码

用户名和密码正常,用户是DBowner。端口也正确,我试图通过Telnet连接到服务器使用:     o IP地址1433 它的工作原理。

以下是代码:

function foo() {
    var conn = Jdbc.getConnection("jdbc:sqlserver://IP-adress:1433/DBName","user","password");
    var stmt = conn.createStatement();
    stmt.setMaxRows(100);
    var start = new Date();
    var rs = stmt.executeQuery("select * from person");
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    var cell = doc.getRange('a1');
    var row = 0;
    while (rs.next()) {
        for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
            cell.offset(row, col).setValue(rs.getString(col + 1));
        }
        row++;
    }
    rs.close();
    stmt.close();
    conn.close();
    var end = new Date();
    Logger.log("time took: " + (end.getTime() - start.getTime()));
}

你知道什么是错的吗?我是否必须在服务器上进行一些配置?还是在数据库中?上述说明旨在确保Google的IP地址可以访问数据库。但是,我没有列出谷歌的所有IP地址,而是授权访问该端口上的所有IP地址。我还在SQL Server配置管理器中启用了TCP / IP协议。我在MSSMS中向服务器授予“远程连接”。还有其他想法吗?

2 个答案:

答案 0 :(得分:3)

好吧,我在这里找到了答案: Google Apps Scripts/JDBC/MySQL

显然,连接字符串必须如下所示:

var conn = Jdbc.getConnection("jdbc:sqlserver://IP-address:1433;" + "databaseName=DBName;user=username;password=password;");

我不明白为什么连接字符串与Google文档中的连接字符串有所不同,但这个字符串对我有用...

答案 1 :(得分:0)

问题出在连接字符串中。

它应该是这样的

          address = '%YOUR SQL HOSTNAME%';
          user = '%YOUR USE%';
          userPwd = '%YOUR PW%';
          dbUrl = 'jdbc:sqlserver://' + address + ':1433;databaseName=' + queryDb;
          var conn = Jdbc.getConnection(dbUrl, user, userPwd);

我在GitHub上有一个完整的工具,你可以连接到MySQL和SQL Server。我可以用它来帮助你。我将不断更新超时功能!你可以在这里找到它。

GOOGLE SPREADSHEET JDBC CONNECTOR TOOL