3

我正在使用带有 IIS (IISNode) 和 Microsoft 的 MS SQL 驱动程序包 (MSNodeSQL) 的 Node JS 来创建一个 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); 

我有一种感觉,它可能归结为某个地方的权限,因为它在本地而不是远程工作,但我不完全确定。另外,在本地时,Node JS 正在不同的用户下执行,而不是 IISNode 使用的 IIS_IUSR。

任何帮助都会很棒,谢谢!

4

1 回答 1

0

我试过Node-MSSQL,它非常好用,非常简单易用,它已成功连接并获取数据,但它仅适用于 sql 身份验证

于 2014-10-24T15:23:31.017 回答