[英]Inserting Records via Stored Procedure Not Working (using Tedious MS SQL Driver)
I am working on an app. 我正在开发一个应用程序。 which has to insert records at an avg.
必须在平均位置插入记录。 rate of ~900 records/sec.
约900条记录/秒的速率。
For this I am trying to build a console app based off TCP which listens for clients connecting to the server using Node.JS as my platform. 为此,我试图基于TCP构建一个控制台应用程序,该应用程序侦听使用Node.JS作为平台连接到服务器的客户端。
I am firing a stored procedure to insert static text (in table) as a parameter to the SP but its not working and no error(s) are caught. 我正在射击一个存储过程,以将静态文本(在表中)作为SP的参数插入,但它不起作用,并且未捕获任何错误。
Can anyone pls help me out with this? 有人可以帮我这个忙吗? am new to node.js
是node.js的新手
My server side app: 我的服务器端应用程序:
var net = require('net');
var fs = require('fs');
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var HOST = '127.0.0.1';
var PORT = 7000;
var timeout = 420000; // msec - *420000
//db conn config
var config = {
server: '192.168.0.57',
userName: 'sa',
password: 'sa',
options: {
database: "NodeJSBenchmark",
}
};
var lg = function(message) {
console.log(message);
};
var server = net.createServer();
var connection = new Connection(config);
server.on('listening', function() {
lg('Server listening on ' + HOST +':'+ PORT);
});
server.on('connection', function(sock) {
sock.setTimeout(timeout, function() {
try {
sock.end();
}
catch(x) {
lg('on end' + x);
}
});
function executeStatement() {
//var storedProcName = '[NodeJSBenchmark].[dbo].[spINSERTsockdata]';
var storedProcName = 'spINSERTsockdata';
var request = new Request(storedProcName, function(err, rowCount) {
if(err){
lg('Error on insert' + err);
}
else {
lg(rowCount + ' rows2');
lg('SP fininshed running..');
}
connection.close();
});
request.addParameter('sockdata', TYPES.VarChar, 'ping');
request.on('doneProc', function(rowCount, more, returnStatus) {
lg('Rows Changed: ' + rowCount + 'Return Stat: ' + returnStatus);
});
connection.callProcedure(request);
}
sock.setNoDelay(true);
//sock.setEncoding('ascii');
// Identify incoming client
sock.name = sock.remoteAddress + ":" + sock.remotePort
sock.on('data', function(data) {
try {
//lg("CONNECTED: "+sock.name);
//lg("INCOMING DATA: "+data);
sock.write(data);
connection.on('connect', function(err) {
// If conn is active; hit db..
executeStatement();
});
}
catch(x) {
lg(x);
}
});
sock.on('end', function(data) {
try {
sock.end();
}
catch(x) {
lg('on end' + x);
}
});
sock.on('error', function(err) {
lg(err);
});
sock.on('close', function(data) {
try {
sock.end();
}
catch(x) {
lg(x);
}
try {
sock.destroy();
}
catch(x) {
lg('on close' + x);
}
});
sock.on('timeout', function() {
});
});
server.on('error', function(err) {
});
server.on('close', function() {
});
server.listen(PORT, HOST);
SP: SP:
USE [NodeJSBenchmark]
GO
/****** Object: StoredProcedure [dbo].[spINSERTsockdata] Script Date: 9/5/2013 4:16:19 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[spINSERTsockdata] @sockdata varchar(10)
AS
SET NOCOUNT ON
INSERT INTO [dbo].[tblSockData]
([inbound])
VALUES
(@sockdata)
Please try adding following code : 请尝试添加以下代码:
var TYPES = require('tedious').TYPES;
Since with the code given TYPES
undefined 由于使用给定的代码
TYPES
未定义
Run SQL Server Configuration Manager. 运行SQL Server配置管理器。
Go to SQL Server Network Configuration > Protocols for SQLEXPRESS. 转到“ SQL Server网络配置”>“ SQLEXPRESS的协议”。
Make sure TCP/IP is enabled. 确保已启用TCP / IP。
Then right-click on TCP/IP and select Properties, verify that under IP2, the IP Address is set to the computer's IP address on the local subnet, Make sure that TCP Dynamic Ports is blank & Make sure that TCP Port is set to 1433. (Tedious by default tries on this port) 然后右键单击“ TCP / IP”并选择“属性”,确认在IP2下,“ IP地址”已设置为本地子网上的计算机IP地址,请确保“ TCP动态端口”为空白,并确保“ TCP端口”设置为1433。 (默认情况下,乏味尝试此端口)
var net = require('net'); var fs = require('fs'); var TYPES = require('tedious').TYPES; var Connection = require('tedious').Connection; var Request = require('tedious').Request; var HOST = '127.0.0.1'; var PORT = 7000; var timeout = 420000; // msec - *420000 //db conn config var config = { server: '127.0.0.1', userName: 'sa', password: '12345', options: { database: "NodeJSBenchmark", instanceName : "SQLEXPRESS" } }; var lg = function(message) { console.log(message); }; var server = net.createServer(); var connection = new Connection(config); connection.on('connect', function (err) { if (err) { return console.log('Error connecting:\\t' + err); } else { console.log('CONNECTED TO MS-SQL'); } }); connection.on('errorMessage', function (err) { if (err) { return console.log('Error connecting 2:\\t' + JSON.stringify(err)); } }); connection.on('infoMessage', function (info) { if (err) { return console.log('Information:\\t' + JSON.stringify(info)); } }); server.on('listening', function() { lg('Server listening on ' + HOST +':'+ PORT); }); server.on('connection', function (sock) { sock.setTimeout(timeout, function () { try { sock.end(); } catch (x) { lg('on end' + x); } }); function executeStatement() { //var storedProcName = '[NodeJSBenchmark].[dbo].[spINSERTsockdata]'; var storedProcName = 'spINSERTsockdata'; var request = new Request(storedProcName, function (err, rowCount) { if (err) { lg('Error on insert' + err); } else { lg(rowCount + ' rows2'); lg('SP fininshed running..'); } connection.close(); }); request.addParameter('sockdata', TYPES.VarChar, 'ping'); request.on('doneProc', function (rowCount, more, returnStatus) { lg('Rows Changed: ' + rowCount + 'Return Stat: ' + returnStatus); }); connection.callProcedure(request); } sock.setNoDelay(true); //sock.setEncoding('ascii'); // Identify incoming client sock.name = sock.remoteAddress + ":" + sock.remotePort sock.on('data', function (data) { try { //lg("CONNECTED: "+sock.name); //lg("INCOMING DATA: "+data); sock.write(data); executeStatement(); } catch (x) { lg(x); } }); sock.on('end', function (data) { try { sock.end(); } catch (x) { lg('on end' + x); } }); sock.on('error', function (err) { lg(err); }); sock.on('close', function (data) { try { sock.end(); } catch (x) { lg(x); } try { sock.destroy(); } catch (x) { lg('on close' + x); } }); sock.on('timeout', function () { }); }); server.on('error', function(err) { }); server.on('close', function() { }); server.listen(PORT, HOST);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.