gpt4 book ai didi

node.js - Node mssql 临时表丢失 - RequestError : Invalid object name '#myTempTable'

转载 作者:搜寻专家 更新时间:2023-10-31 22:41:32 25 4
gpt4 key购买 nike

我正在使用 node-mssql 并从 docker 连接到 2017 sql server。

问题

在我的整个脚本中,我把

var test = await dbRequest().batch("SELECT * FROM #myTestTable");

间歇性地,我收到错误 RequestError: Invalid object name '#myTempTable'。所以我在我的 sql.ConnectionPool 上放了一些 watch ,以确定发生什么情况会导致错误。在大多数执行行中,pool.pool.available 变量为 1,如下所示。

enter image description here

每当错误发生时,在进入下一行之前,pool.pool.available 将为 0,如下所示:

enter image description here

如果这发生在运行前var test = await dbRequest().batch("SELECT * FROM #myTestTable");

它会失败RequestError:无效的对象名称“#myTempTable”

我尝试过的

我尝试使用 {min: 100, max: 1000, log: true} 将池配置发送到 Tedious,但不幸的是它似乎被忽略了 (https://www.npmjs.com/package/mssql#connection-pools)

var sqlServerProperty = {
user: '',
password: '',
server: '192.168.1.13',
database: 'CCTDB',
pool: {min: 1,
max: 100,
idleTimeoutMillis: 30000}
};

我也只尝试了一个 pool.request() 并从中运行所有 dbRequests。没有骰子!

感谢任何帮助!

dbRequest() 是什么样子的?

// the entire script is wrapped in an async function
var pool = new sql.ConnectionPool(sqlServerProperty);
await pool.connect();
var dbRequest = ( () => { return pool.request() });

最佳答案

该错误消息只是初始 session (或连接)已关闭并开始新 session 的标志。临时表具有 session 的生命周期。为了解决这个问题,请确保您的逻辑可以保留打开的连接,直到不再需要 #temp 表为止

我不是nodejs专家,但很快research告诉:

There is a clear way to do it - simply initialize Connection with pool.min option set to 1 (or higher). It means, that there must be at least one active connection in the pool. Higher number means more concurrent active connections.

你试过类似的东西吗?:

pool: {min: 20, 
max: 100,
idleTimeoutMillis: 30000}

在这种情况下,将建立更多的连接,因此在某个时间点有更多的连接可用,并且您的 session 因被其他东西使用而关闭的机会将减少

关于node.js - Node mssql 临时表丢失 - RequestError : Invalid object name '#myTempTable' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54320827/

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