gpt4 book ai didi

sql-server - 如何使用nodejs在mssql中运行模式创建sql脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:49 27 4
gpt4 key购买 nike

我已将代码部署在 Azure Function App 中,并使用 NodeJS 尝试在 SQL Server 数据库上执行 sql 脚本。为了解决这个问题,我使用了 NPM 包 sqlcmd-runner .

这是我正在使用的代码:

module.exports.dumpScriptinDatabase = (dbConfig, context) => {
return new Promise((resolve, reject) => {
sqlcmd({
server: dbConfig.server,
database: dbConfig.options.database,
username: dbConfig.userName,
password: dbConfig.password,
encryptedConnection: true,
inputFiles: [`${__dirname}\\db.sql`]
})
.catch((error) => {
reject('Error dumping script!!')
})
.done(() => {
resolve('Dumping script completed.')
});
});

我正在 dbConfig 变量中获取所有数据库详细信息。此外,db.sql 在架构中创建表、 View 等。

我面临的问题是这个模块在失败时永远不会返回错误,并且也不会成功执行。服务器在执行时返回502错误代码。

我能够调试的一件事是 npm 包代码使用 sqlcmd 来执行脚本。

有人可以帮我解决这个问题吗?

最佳答案

所以我使用几个源文件对此进行了测试,它工作正常,脚本运行成功。

index.js

const dbConfig = require('./dbconfig.json');
const dumpScript = require('./dumpScript.js');

console.log('Running script');
dumpScript.dumpScriptinDatabase(dbConfig, 'context').then(() => {
console.log('Script complete');
}).catch ( (err) => {
console.error('Script error: ', err);
});

dumpScript.js

const sqlcmd = require('sqlcmd-runner');

module.exports.dumpScriptinDatabase = (dbConfig, context) => {
return sqlcmd({
server: dbConfig.server,
database: dbConfig.options.database,
username: dbConfig.userName,
password: dbConfig.password,
encryptedConnection: true,
inputFiles: [`${__dirname}\\db.sql`]
});
}

dbConfig.json

{
"server": "sql_server",
"options": {
"database": "test_db"
},
"userName": "user",
"password": "password"

}

我简化了 dumpScript.js 文件,我们可以简单地从 sqlcmd 函数返回 Promise,而不是使用 .then 和 .catch。

然后我们在index.js 中处理这个问题。

我要提到的几件事是,您需要 PATH 上有相当新版本的 sqlcmd 实用程序才能正常工作。

此外,您可能需要修改index.js脚本,我正在从.json文件加载dbConfig,您可能正在做一些不同的事情。

关于sql-server - 如何使用nodejs在mssql中运行模式创建sql脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51169690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com