Javascript 通过存储过程插入记录无效(使用繁琐的MS SQL驱动程序)

Javascript 通过存储过程插入记录无效(使用繁琐的MS SQL驱动程序),javascript,node.js,sockets,network-programming,Javascript,Node.js,Sockets,Network Programming,我正在开发一个应用程序。必须以每秒约900条记录的平均速率插入记录。 为此,我正在尝试构建一个基于TCP的控制台应用程序,该应用程序使用Node.JS作为我的平台来侦听连接到服务器的客户端 我启动了一个存储过程,在表中插入静态文本作为SP的参数,但它不工作,也没有捕获错误 谁能帮我解决这个问题吗?我是node.js的新手 我的服务器端应用程序: var net = require('net'); var fs = require('fs'); var Connection =

我正在开发一个应用程序。必须以每秒约900条记录的平均速率插入记录。 为此,我正在尝试构建一个基于TCP的控制台应用程序,该应用程序使用Node.JS作为我的平台来侦听连接到服务器的客户端

我启动了一个存储过程,在表中插入静态文本作为SP的参数,但它不工作,也没有捕获错误

谁能帮我解决这个问题吗?我是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:


请尝试添加以下代码: 变量类型=需要“冗长的”。类型;因为代码给定的类型未定义 确保为SQL启用TCP/IP 按照以下步骤操作:

运行SQL Server配置管理器

转到SQLServer网络配置>SQLEXPRESS协议

确保TCP/IP已启用

然后右键单击TCP/IP并选择属性,验证在IP2下,IP地址是否设置为本地子网上计算机的IP地址,确保TCP动态端口为空并确保TCP端口设置为1433。默认情况下,在该端口上尝试会很乏味 下面是为我测试的代码


请在评论结束后更新状态,您面临的问题是什么?@AmolMKulkarni nope din不起作用且未返回任何错误:请尝试输入第一行var TYPES=require'tedous'.TYPES;。因为代码给出了它的undefined@AmolMKulkarni:d thx用于提醒我添加类型。。哈哈,差点忘了加。但我的桌子还是空的——和以前一样:你能给我们看一下SP吗,以便更好地从人们那里得到答案……嗨,谢谢你的回复。不..不起作用:s没有返回错误。:d thx用于提醒我添加类型。。哈哈,差点忘了加。但我的桌子还是空的我,sry无法检查这个。在第39行,if err err未定义..这不是if info吗?:另外,var TYPES=require'tedious'。类型;也我现在会查的我没有任何问题。。信息,但仍然更新答案。。我想我已经配置了SQL server使其能够工作。。正如我前面提到的那样,只需检查SQL。。希望它至少能帮上一点忙
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 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);