0

计划使用 node.js 在 Windows Azure 网站上构建新项目时,我遇到了 SQL Server 模块的问题,我无法解决:

我正在使用下载的模块二进制文件,以及示例中的简单代码,连接到 Azure 托管的 SQL Server:

var sql = require('node-sqlserver');
var http = require('http');

var conn_str = "Driver={SQL Server Native Client 10.0};Server=tcp:server.database.windows.net,1433;Database=database;Uid=user@server;Pwd=mypass;Encrypt=yes;Connection Timeout=30;";

var port = process.env.port||3000;
http.createServer(function (req, res) {

sql.query(conn_str, "SELECT * FROM testdb.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' });
    res.end(JSON.stringify(results));
});

}).listen(port);

该示例在我的 PC 上本地运行,它能够连接到 Azure SQL 并检索行,尽管我必须将节点降级到 0.6.19 才能使其工作,但是当我将它部署到 Azure 时它失败了。当我尝试访问网站时,经过长时间的等待,我收到:

iisnode encountered an error when processing the request.

HRESULT: 0x6d
HTTP status: 500
HTTP reason: Internal Server Error
You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is 'true'.

In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW     traces to further diagnose the problem.

The node.exe process has not written any information to the stdout or stderr.

我尝试从源代码编译 node-sqlserver 模块,它再次在我的 PC 上运行,在 Azure 上具有相同的结果。我还验证了模块二进制文件已部署(我正在使用 git 进行部署)。

有任何想法吗?

4

1 回答 1

1

好的,结果是,SQL 数据库和网站位于不同的地理区域,尽管“可用于 Azure 服务”设置,但 Azure 无法连接到不同区域的 SQL 服务器。不得不移动数据库并且它工作。

于 2012-07-09T10:38:54.773 回答