我正在尝试创建一个由http请求触发的Azure函数,然后从SQL数据库中选择数据,然后返回数据。
我尝试按照此处的示例设置一个简单连接到数据库的基本示例:https://msdn.microsoft.com/library/mt715784.aspx 它不是特定于 Azure Function 的,但我认为它应该运行:
var Connection = require('tedious').Connection;
var config = {
userName: 'userName',
password: 'password',
server: 'databaseServer.database.windows.net',
options: {encrypt: true, database: 'AdventureWorks'}
};
module.exports = function(context, req, saasSql) {
var connection = new Connection(config);
connection.on('connect', function(err) {
if(err) {
context.log(err);
} else {
context.log("Connected");
context.res = {
body: 'Connected'
};
context.done();
}
});
};
但是当它运行时(在管理控制台中触发)。我收到一条日志消息,表明该函数已启动,然后日志中没有其他内容。底部的输出窗口显示 Status: 502 Bad Gateway 和以下消息: 已为函数应用启用身份验证。在运行该函数之前禁用身份验证。
我猜这是因为我没有调用 context.done() 因为此函数的身份验证已关闭。我似乎无法弄清楚如何从连接尝试中获取任何错误信息等,我也尝试绑定(bind)到错误事件,但没有任何结果被触发。
更新
该错误消息是 Azure Functions 代码中的错误,并且显示了不正确的错误。然而,上面的代码仍然没有运行(并且没有抛出错误)。当我创建本地 Node 服务器并以这种方式运行时,它运行得很好,因此在 Azure Functions 框架中运行似乎存在问题。有没有办法从 Azure 函数连接到 SQL 数据库?
最佳答案
错误消息“为函数应用启用了身份验证。运行该函数之前禁用身份验证。”
表示您已启用 Authentication / Authorization feature您的功能应用程序的。这将阻止门户调用您的 Http 函数,因为需要身份验证。请注意,此身份验证与您在功能门户中配置的功能级别身份验证不同。
因此,目前唯一可行的方法是按照错误消息所述执行操作 - 禁用 Function App 级别身份验证。我们的存储库中有一个跟踪项目来改进这一点 ( issue here )。
关于node.js - 从 NodeJS 中的 Azure Function 访问 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395081/