SQL-AzureDBに接続するAzure上にnode.jsWebサイトを構築するために、ここのチュートリアルに従いました。
http://www.windowsazure.com/en-us/develop/nodejs/tutorials/web-site-with-sql-database/
私の.jsコードは次のようになります。
var sql = require('msnodesql'),
nconf = require('nconf');
exports.authenticate = function(req, res){
var select = "select userID, clientID from users where username_e = '?' AND pwd_e = '?'";
nconf.env().file({ file: 'config.json' });
var conn = nconf.get("SQL_CONN");
console.log(conn);
sql.query(conn, select, [req.param('username'), req.param('password')], function(err, results) {
if(err)
throw err;
console.log(results);
if(results.length == 0) {
// no match
res.redirect('/login?failed=true');
} else {
// authenticated
res.redirect('/start');
}
});
return;
};
しかし、ローカルのnode.jsで実行すると、次のようになります。
"Login failed for user 'mylogin'"
- ODBC接続文字列をAzure管理サイトから直接コピーしました
- {ここにあなたのパスワード}を自分のパスワードに置き換えました
- ユーザー名とパスワードが正しいことを4回確認しました(管理ツールに正常にログインでき、ローカルからSQL Server Management Studioを介してDBに正常に接続できます)
- パブリックIPアドレスにIP例外を追加しました
- 接続文字列をあちこちで編集してみました(ユーザー名をmylogin @ serverではなくmyloginに変更し、代わりにADO接続文字列を使用してみました)
また、jdbcを使用してJavaで正常に接続できました。機能したjdbc接続文字列は次のとおりです。
jdbc:sqlserver://xxxmyserver.database.windows.net:1433;DatabaseName=mydb;user=mylogin@xxxmyserver;password=pwd
そして、これが機能しないnode.jsODBC接続文字列です。
Driver={SQL Server Native Client 10.0};Server=tcp:xxxmyserver.database.windows.net,1433;Database=[mydb];Uid=mylogin@xxxmyserver;Pwd=pwd;Encrypt=yes;Connection Timeout=30;
特にSSMSを使用してローカルから正常に接続できるため、ここでは完全に途方に暮れています。他の誰かが同じ問題に遭遇しますか?
重要な場合は、node.js v0.8.2(AzureのVMにあるため)とmsnodesqlv0.2.1を使用しています。