更新时间:2023-02-09 08:19:29
在 Kudu远程执行控制台中的 D:\ home \ site \ wwwroot
下运行 npm install tedious
命令./p>
在Azure Functions中,所有代码都应放在 module.exports
函数中.
您应该使用 context.log()
而不是 console.log()
.
您实际上不必在功能的应用程序设置中设置连接设置字符串.
当代码完成后,应通过调用 context.done()
通知运行时.
以下代码对我有用:
var Connection = require('乏味').Connection;var Request = require('乏味').Request;module.exports =函数(上下文,要求){context.log('JavaScript HTTP触发函数处理了一个请求.');var config = {userName:< userName>",密码:< password>",服务器:< AzureSQLDBName> .database.windows.net",//如果您使用的是Windows Azure,则需要执行以下操作:选项:{数据库:您的数据库",加密:true}};var connection = new Connection(config);connection.on('connect',function(err){如果(错误){context.log(err);context.res = {状态:500,正文:无法建立连接."};context.done();} 别的 {executeStatement();}});函数executeStatement(){request = new Request("select 42,'hello world'",function(err,rowCount){如果(错误){context.log(err);context.res = {状态:500,正文:无法连接到执行语句."};context.done();} 别的 {context.log(rowCount +'rows');}});request.on('row',function(columns){column.forEach(function(column){context.log(column.value);});context.done();});connection.execSql(request);}};
有关更多信息,请参见 Azure函数JavaScript开发人员指南.
I am trying to connect to my Azure SQL DB from an azure function written in nodeJS. I have set the connection strings in the application settings and it still does not work. I used ODBC key for connection settings. Did anyone try this? Below is the sample code for my function
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
// Create connection to database
const config = process.env["sqldb_connection"];
var connection = new Connection(config);
// Attempt to connect and execute queries if connection goes through
connection.on('connect', function(err)
{
if (err)
{
console.log(err)
}
else
{
queryDatabase()
}
}
);
function queryDatabase()
{ console.log('Reading rows from the Table...');
// Read all rows from table
request = new Request(
"SELECT ORG_ID,ORG_NAME FROM org",
function(err, rowCount, rows)
{
console.log(rowCount + ' row(s) returned');
process.exit();
}
);
request.on('row', function(columns) {
columns.forEach(function(column) {
console.log("%s\t%s", column.metadata.colName, column.value);
});
});
connection.execSql(request);
}
I am getting an error saying
Exception while executing function: Functions.HttpTriggerJS2. mscorlib: The given key was not present in the dictionary.
Run the npm install tedious
command in the Kudu remote execution console under D:\home\site\wwwroot
.
In Azure Functions, all of your code should be put inside the module.exports
function.
You should use context.log()
instead of console.log()
.
You really don't have to set the connection settings string in Application settings of the function.
You should inform the runtime when your code has finished by calling context.done()
.
The following code works for me:
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
var config = {
userName: '<userName>',
password: '<password>',
server: '<AzureSQLDBName>.database.windows.net',
// If you're on Windows Azure, you will need this:
options:
{
database: 'your DB',
encrypt: true
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
if (err) {
context.log(err);
context.res = {
status: 500,
body: "Unable to establish a connection."
};
context.done();
} else {
executeStatement();
}
});
function executeStatement() {
request = new Request("select 42, 'hello world'", function(err, rowCount) {
if (err) {
context.log(err);
context.res = {
status: 500,
body: "Failed to connect to execute statement."
};
context.done();
} else {
context.log(rowCount + ' rows');
}
});
request.on('row', function(columns) {
columns.forEach(function(column) {
context.log(column.value);
});
context.done();
});
connection.execSql(request);
}
};
For more information, see Azure Functions JavaScript developer guide.