【发布时间】:2021-11-23 22:13:26
【问题描述】:
总结:
我想在初始化一个新的sequalize对象时更改connection string的application name。基于this stackoverflow question,我设置dialectOptions的appName如下:
let conn = new Sequelize(this.models.sequelize.config.database, this.models.sequelize.config.username,
this.models.sequelize.config.password, {
host: this.models.sequelize.config.host,
dialect: this.models.sequelize.getDialect(),
dialectOptions: {
appName: "userid=-2@gid=" + gid
}
});
问题:
当我执行类似以下代码的事务时,application name 不会传递给 SQL 服务器。当我监控SQL查询的执行时,下图显示Tedious被发送到应用名称。
交易代码:
await conn.transaction(async t => {
for(let i in this.collect){
let queryBuilder = this.collect[i];
let options = {replacements: queryBuilder.replacement, transaction: t};
if(queryBuilder.type === 'insert'){
options.type = conn.QueryTypes.INSERT;
}
let row = await conn.query(queryBuilder.query + ';select @@IDENTITY as id', options);
progressBar.update(parseInt(i) + 1);
}
SQL Profiler 图片是:
如何正确设置Application Name?
【问题讨论】:
-
自从我使用 Sequelize 已经有一段时间了,但是您可以为您的方言使用硬编码值,例如“mssql”,而不是您拥有的
dialect: this.models.sequelize.getDialect()所以您将拥有dialect: 'mssql'或使用 postgres , mysql 或任何你的方言? -
还是一样。
application name仍然很乏味。
标签: node.js sequelize.js tedious