【问题标题】:how do i connect azure database with google spreadsheet script?如何将 azure 数据库与 google 电子表格脚本连接?
【发布时间】:2018-01-15 17:25:26
【问题描述】:

我在 sql server manager studio 中创建了一个具有 db_reader 角色的用户,我尝试使用以下代码通过脚本连接 google 电子表格:

   function AcessaVendas () {
   var URL = 'jdbc:sqlserver://servername:1433'
   var USER = 'visitant'
   var PASS = '*******'
   var conn = Jdbc.getConnection(URL, USER, PASS);  
   var stmt = conn.createStatement();
   stmt.setMaxRows(10000);
   var start = new Date(); 
   var rs = stmt.executeQuery( myquery());
   var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dados");
   ss.getRange('a2:h1000').clearContent();
   var cell = ss.getRange('a2');
   var row = 0;
   while (rs.next()) {
    for (var col = 0; col < 11; col++) {
      cell.offset(row, col).setValue(rs.getString(col + 1));
   }
  row++;
}
 rs.close();
 stmt.close();
 conn.close();
 var end = new Date();
 Logger.log('Time elapsed: ' + (end.getTime() - start.getTime()));
}

但总是出现这个错误:“无法建立数据库连接。请检查连接字符串、用户名和密码。”

我已经尝试打开 ip 0.0.0.0 到 255.255.255.255 有人可以告诉我我在哪里做错了吗?

【问题讨论】:

  • 我用更少的东西创建了一个类似的帖子,因为我发现有很多东西错了
  • 对不起。希望你能找到答案。
  • 你能从 SSMS 连接吗?
  • 是的,我可以连接 SSMS
  • 运行应用程序的客户端是否开放了 1433 端口?

标签: sql-server google-apps-script google-sheets azure-sql-database ssms


【解决方案1】:

设法找到正确的连接字符串。见下文:

var servername = 'servername'
var user = 'username';
var userPwd = 'password';
var db = 'dbname';
var userString = user + '@' + servername
var connectionString = 'jdbc:sqlserver://' + servername + '.database.windows.net:1433;databaseName=' + db

var conn = Jdbc.getConnection(connectionString,userString,userPwd);

希望对你有帮助

【讨论】:

    【解决方案2】:

    此代码运行良好:连接 Azure 数据库并从表中获取数据

    function onOpen() {
    
    var spreadsheet = SpreadsheetApp.getActive();
    
    var menuItems = [
        {name: 'Get Data', functionName: 'readData'}
    ];
        spreadsheet.addMenu('Report', menuItems);
    }
    
    
    // Replace the variables in this block with your values. Port ':1433' is not necessary
     var hostName = 'SERVER.database.windows.net:1433;'
     var db = 'DBNAME;';
     var user = 'USER@SERVER';
     var userPwd = 'PASSWORD';
    
    
    
     var dbUrl = 'jdbc:sqlserver://'+hostName + 'databaseName='+db; 
    
    
    function readData() {
     var conn = Jdbc.getConnection(dbUrl, user, userPwd);
     var stmt = conn.createStatement();
    
    
     // Place your query below
     var results = stmt.executeQuery('SELECT TOP (10) * FROM [dbo].[NAME]');
     var metaData=results.getMetaData();
     var numCols = metaData.getColumnCount();
     var sheet = SpreadsheetApp.getActiveSheet();
    
     sheet.clearContents();
    
     var arr=[];
    
     for (var col = 0; col < numCols; col++) {
      arr.push(metaData.getColumnName(col + 1));
     }
    
     sheet.appendRow(arr);
    
    
     while (results.next()) {
      arr=[];
    
      for (var col = 0; col < numCols; col++) {
    
       arr.push(results.getString(col + 1));
      }
     sheet.appendRow(arr);
    
    }
    
    results.close();
    stmt.close();
    
    sheet.autoResizeColumns(1, numCols+1);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2020-11-24
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多