是的,截至 2021 年,您似乎能够做到这一点。在这篇文章中,我指的是这个版本的 Node MSSQL 驱动程序:
"mssql": "^6.3.1"
见https://www.npmjs.com/package/mssql
导入时有五种可能的隔离级别'mssql/lib/isolationlevel'
:
module.exports = {
READ_UNCOMMITTED: 0x01,
READ_COMMITTED: 0x02,
REPEATABLE_READ: 0x03,
SERIALIZABLE: 0x04,
SNAPSHOT: 0x05
}
这是一种可能的方法来指定 READ_COMMITTED_SNAPSHOT 的事务隔离级别或通过从连接池中检索的连接的繁琐驱动程序的任何其他隔离级别:
您从以下位置导入隔离级别mssql/lib/isolationlevel
:
import { READ_UNCOMMITTED } from 'mssql/lib/isolationlevel'
我们假设您有一个连接池,创建如下:
export const poolPromise = new sql.ConnectionPool(dbConfig).connect();
然后在每次连接检索后,您可以通过更改连接的配置选项来设置隔离级别:
export async function executeSelectQuery(sqlQuery) {
console.log('executeSelectQuery', sqlQuery)
const conn = await createConn();
conn.config.options.connectionIsolationLevel = READ_UNCOMMITTED
const res = await conn.request().query(sqlQuery);
return res ? res.recordset : [];
}
我已经使用此代码来验证是否确实更改了隔离级别:
export async function executeSelectQuery(sqlQuery) {
console.log('executeSelectQuery', sqlQuery)
const conn = await createConn();
conn.config.options.connectionIsolationLevel = READ_UNCOMMITTED
const isolationLevelRes = await conn.request().query(`
begin
DBCC USEROPTIONS
end
`)
console.log('isolationLevelRes after', isolationLevelRes.recordsets)
const res = await conn.request().query(sqlQuery);
return res ? res.recordset : [];
}
事实上,我可以在控制台上看到这个条目: