我正在尝试使用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中向服务器授予“远程连接”。还有其他想法吗?
答案 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。我可以用它来帮助你。我将不断更新超时功能!你可以在这里找到它。