3

Node JS と IIS (IISNode) および Microsoft の MS SQL ドライバー パッケージ (MSNodeSQL) を使用して、http サーバーを作成しています。http サーバー経由でデータベースにアクセスすると、MS SQL データベースに接続しようとすると次のエラーが表示されます。

error { [Error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified] sqlstate: 'IM002', code: 0 }

しかし、http サーバーを使用せずに自分のサーバーでローカルにデータベースにアクセスしようとすると、完全に正常に接続されます。ODBC ドライバーは当然インストールされています。

これが私のコードです:

var http = require('http');
var sql = require('msnodesql');
var conn_str = "Driver={SQL Server Native Client 11.0}; Server=***; Database=***; UID=***; PWD=***;";

var blah = "";
http.createServer(function (req, res) {

    sql.open(conn_str, function (err, conn) {
        if (err) {
            console.log("error", err);
            res.end("error");
            return;
        }

        conn.queryRaw("SELECT * FROM ProductLinks", function (err, results) {
            if (err) {
                res.end('failed2');
                return;
            }
            for (var i = 0; i < results.rows.length; i++) {
                blah += "Id: " + results.rows[i][0] + " Name: " + results.rows[i][1] + " Text: " + results.rows[i][2] + " Link: " + results.rows[i][3];
            }
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(blah);
        });
    });
}).listen(process.env.PORT); 

リモートではなくローカルで機能するため、どこかのアクセス許可が原因である可能性があると感じていますが、完全にはわかりません。さらに、ローカルの場合、IISNode が使用する IIS_IUSR とは対照的に、Node JS は別のユーザーで実行されます。

どんな助けでも素晴らしいでしょう、ありがとう!

4

1 に答える 1