我正在使用带有IIS(IISNode)的Node JS和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);
我觉得它可能在某处受限,因为它在本地而不是在远程运行,但是我不确定。另外,在本地时,Node JS是在另一个用户下执行的,而不是IISNode使用的IIS_IUSR。
任何帮助将是巨大的,谢谢!
最佳答案
我尝试了Node-MSSQL,它非常好用,非常简单,已经连接并成功获取数据,但仅适用于sql身份验证