移动服务服务器脚本(计划)是否可以访问其他Sql Azure数据库?

时间:2013-07-24 13:13:52

标签: javascript azure azure-mobile-services

我正在寻找使用Azure移动服务创建预定作业。

由于该服务最终会调用另一个云服务(网站),我想知道移动脚本是否可以访问云服务已经存在的数据库。

据我所知,您可以指定一个用于移动脚本的数据库(我选择免费进行日志记录)但似乎无法判断您是否可以通过API访问其他数据库。

var todoItemsTable = tables.getTable('TodoItems');

...或CEO

var todoItemsTable = databases.getDatabase('NonMobileSqlDb').tables.getTable('TodoItems');

我已经检查了this question(您可以将Azure移动服务与Azure云服务混合使用吗?)但它似乎不包括与数据库通信的脚本。

一些背景......

移动服务将(按计划)调用执行例行操作的Web服务(具有授权)。我想锁定这项服务(没有ssl),一种方法是生成服务可以使用云服务可以验证的密钥。该密钥将存储在数据库中,既可以访问,也只能在短时间内使用。

1 个答案:

答案 0 :(得分:4)

是的,你可以。

您需要使用Node.js中的以下示例(使用how-to guide)进行连接:

  

要使用node-sqlserver,您必须在应用程序中使用它   指定连接字符串。连接字符串应该是ODBC   How to: Get SQL Database connection information中返回的值   本文的一节。代码应该类似于   以下内容:

var sql = require('node-sqlserver');
var conn_str = "Driver={SQL Server Native Client 10.0};Server=tcp:{dbservername}.database.windows.net,1433;Database={database};Uid={username};Pwd={password};Encrypt=yes;Connection Timeout=30;";
  

可以通过指定Transact-SQL语句来执行查询   查询方法。以下代码创建一个HTTP服务器和   返回Test表中ID,Column1和Column2行的数据   当您查看网页时:

var http = require('http')
var port = process.env.port||3000;
http.createServer(function (req, res) {
    sql.query(conn_str, "SELECT * FROM TestTable", function (err, results) {
        if (err) {
            res.writeHead(500, { 'Content-Type': 'text/plain' });
            res.write("Got error :-( " + err);
            res.end("");
            return;
        }
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        for (var i = 0; i < results.length; i++) {
            res.write("ID: " + results[i].ID + " Column1: " + results[i].Column1 + " Column2: " + results[i].Column2);
        }
        res.end("; Done.");
    });
}).listen(port);

非常感谢@GauravMantri&amp; @hhaggan帮助我们做到这一点。