Node.js 使用mssql npm包连接到SQL Server
我正在尝试编写一个lambda,它将从csv文件中获取值并将它们插入SQL Server中的数据库。用户帐户需要使用Windows身份验证连接到SQL Server以执行插入 我找到了允许连接的Node.js 使用mssql npm包连接到SQL Server,node.js,aws-lambda,node-modules,Node.js,Aws Lambda,Node Modules,我正在尝试编写一个lambda,它将从csv文件中获取值并将它们插入SQL Server中的数据库。用户帐户需要使用Windows身份验证连接到SQL Server以执行插入 我找到了允许连接的mssqlnpm模块,但是当我尝试运行lambda时,我得到以下错误 “代码”:“ELOGIN”, “消息”:“用户'domain\\user'登录失败。” 这是我在lambda中使用的代码: "use strict"; const AWS = require('aws-sdk'); const conv
mssql
npm模块,但是当我尝试运行lambda时,我得到以下错误
“代码”:“ELOGIN”,“消息”:“用户'domain\\user'登录失败。” 这是我在lambda中使用的代码:
"use strict";
const AWS = require('aws-sdk');
const converter = require("csvtojson");
const zlib = require('zlib');
const sql = require('mssql');
var s3 = new AWS.S3();
const config = {
user: 'domain\\user',
password: 'password',
server: process.env.SQL_SERVER,
database: process.env.DATABASE,
options: {
trustedConnection: true
}
};
function unzipS3(keyName, bucketName) {
return new Promise(async (resolve, reject) => {
let options = {
'Bucket': bucketName,
'Key': keyName
};
s3.getObject(options, function (err, res) {
if (err) return reject(err);
resolve(zlib.unzipSync(res.Body).toString());
});
});
}
function convertToJSON(csvFile) {
var options = {
delimiter: ",",
quote: '"',
checkType: true,
output: "json"
};
var convertedJson = '';
return converter(options)
.fromString(csvFile)
}
exports.handler = async (event, context, callback) => {
var bucketName = process.env.BUCKET_NAME;
var prefix = process.env.FOLDER_NAME + '/';
var keyName = event.Records[0].s3.object.key;
var csv = await unzipS3(keyName, bucketName);
var jsonData = await convertToJSON(csv);
console.log(csv);
console.log(jsonData);
var dbconn = await new sql.connect(config);
dbconn.connect().then(function () {
console.log('Connection successfull');
dbconn.close();
});
};
我在网上做了一些研究,除了要使用的mssql
模块外,还参考了一些文档,但这似乎只适用于Windows机器(我在mac上)。我尝试将用户名设置为变量并格式化该变量,使其只有一个反斜杠,并在“用户”字段中使用该反斜杠,但在AWS的CW日志中,它仍然显示双反斜杠“\\”
连接到SQL Server时是否有问题?这是否回答了您的问题?谢谢@O.Jones的参考,我在研究中确实看到了这个链接,但它再次引用了msnodesqlv8模块,我无法从macbook中加载该模块。我想这只适用于Windows计算机。为什么不创建一个用户名和密码在mac中使用,而不是使用Windows身份验证?@ArunK-lambda将驻留在AWS中,并将在该环境中运行。我正在我的机器上进行开发,在那里我尝试安装npm模块(msnodesqlv8),但在模块无法安装的地方出现了错误。如果您使用的是无服务器框架,我建议使用
serverless offline
或serverless localstack
之类的插件,因此,您可以使用类似于lambda的环境进行测试。因为如果你开始编写针对mac和linux的代码,你只会在lambda上运行时发现一些问题。或者,如果您使用的是vscode
,也可以使用vscode-remote
扩展来连接到linux环境并工作。我就是这么做的。祝你好运