我正在尝试使用Tedious模块连接到MSSQL数据库。
让我告诉你我的代码......
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to go...
console.log("Connected");
executeStatement();
});
connection.on('error', function(err) {
console.log("Error");
});
function executeStatement() {
var stmt = new Request("Select id from customers", function (err,rowCount) {
if (err) console.log(err);
console.log("RowCount: " + rowCount);
process.exit(1);
});
stmt.on( 'row', function (columns) {
console.log("\t\tRow");
columns.forEach(function(column) {
console.log(column.value);
});
});
stmt.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
connection.execSql(stmt);
}
我的代码进行查询以获取Customers表中的所有记录。我正在听“行”事件,然后我打印列值。 customers表有1.2亿条记录。 我面临的问题是,当我运行我的代码时,节点应用程序的内存占用量开始增加,一段时间后,节点应用程序退出时出现内存不足错误。
作为一种解决方法,我开始以块的形式查询客户表。我按字段排序,然后读取与该字段中的值对应的所有记录。读取所有记录后,我删除连接并重新连接到数据库并读取下一个值的所有记录。
这样,我意识到我的代码的内存占用情况正在检查中,并且没有内存不足错误。
我只是想知道某人是否遇到类似问题以及如何解决问题?是否有可能我们修复模块来处理它或其他解决方案。
感谢您的帮助
答案 0 :(得分:2)
答案在于设置。确保rowCollectiononRequestCompletion设置为false,您将看到没有内存问题。它也在Tedious网页上记录。
var connection = new tds.Connection({
userName: this.userId,
password: this.password,
server: this.server,
options: {
database: this.dbName,
rowCollectionOnRequestCompletion: false
}
});