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