通过存储过程插入logging不工作(使用繁琐的MS SQL驱动程序)

我正在开发一个应用程序。 必须在平均值处插入logging。 〜900logging/秒的速度。
为此,我正尝试构build一个基于TCP的控制台应用程序,该应用程序侦听连接到使用Node.JS作为我的平台的服务器的客户端。

我正在触发存储过程插入静态文本(在表中)作为SP的参数,但它不工作,没有错误(S)被捕获。

任何人都可以帮我解决这个问题吗? 对node.js是新的

我的服务器端应用程序

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:

 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) 

请尝试添加以下代码:
var TYPES = require('tedious').TYPES;
由于使用TYPES的代码未定义


确保TCP / IP已启用SQL按照以下步骤操作:

  • 运行SQL Serverconfigurationpipe理器。

  • 转到SQL Servernetworkingconfiguration> SQLEXPRESS的协议。

  • 确保TCP / IP已启用。

然后右键单击TCP / IP并select属性,validation在IP2下,IP地址设置为本地子网上的计算机IP地址,确保TCPdynamic端口为空白并确保TCP端口设置为1433 (默认情况下默认会尝试这个端口)


以下是正在为我工​​作的代码 (已testing)

 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);