3

Azure モバイル サービスを使用してスケジュールされたジョブを作成しようとしています。

このサービスは最終的に別のクラウド サービス (Web サイト) を呼び出すことになるため、クラウド サービスが既にアクセスしているデータベースにモバイル スクリプトがアクセスできるかどうか疑問に思っていました。

モバイル スクリプトに使用するデータベースを指定できることは理解していますが (私はロギング用に無料を選択しました)、 APIを介して他のデータベースにアクセスできるかどうかはわかりません。

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

仮説的に...

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

この質問(Azure Mobile Services と Azure Cloud Services を混在させることはできますか?)は既に確認しましたが、データベースとやり取りするスクリプトについては触れていないようです。

いくつかの背景...

モバイル サービスは、定期的なアクションを実行する Web サービスを (スケジュールに従って) (承認を使用して) 呼び出します。このサービスを (ssl なしで) ロックダウンしたいのですが、1 つの方法は、クラウド サービスが検証できる、サービスが使用できるキーを生成することです。このキーはデータベースに保存され、アクセス可能であり、短期間しか使用できません。

4

1 に答える 1

4

はい、できます。

ハウツー ガイドから抜粋した次の例 ( Node.jsを使用) を使用して接続する必要があります。

node-sqlserver を使用するには、アプリケーションでそれを要求し、接続文字列を指定する必要があります。接続文字列は、この記事の「方法: SQL データベース接続情報を取得する」 セクションで返された ODBC 値である必要があります。コードは次のようになります。

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;";

query メソッドで Transact-SQL ステートメントを指定することにより、クエリを実行できます。次のコードは、HTTP サーバーを作成し、Web ページを表示すると、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 と @hhaggan のおかげで、ここまでたどり着くことができました。

于 2013-07-25T09:08:09.360 に答える