当我尝试使用Node.js和Tedioius连接到本地SQL Server实例时,我收到此错误:
{ [ConnectionError: Failed to connect to XXXXX:1433 - connect ECONNREFUSED]
name: 'ConnectionError',
message: 'Failed to connect to XXXXX:1433 - connect ECONNREFUSED',
code: 'ESOCKET' }
这是我的连接对象:
var config = {
userName: 'username',
password: 'password',
server: 'XXXXX',
options: {
database: 'databasename',
instancename: 'SQLEXPRESS'
}
};
我已根据Configuration Manager检查并启用了TCP / IP并在端口1443上进行广播。 SQL Server Browser服务也在运行,如果没有,我读到的可能会导致此类问题。我已经禁用了我的防病毒软件和防火墙,但也没有帮助。
有什么见解?
答案 0 :(得分:15)
所以我猜的是,尽管Tedious允许你在'选项中包含实例名称。它要么不使用它,要么在需要使用它时使用它。在做了一些研究后,应该发生的事情是,当您为SQL Server提供实例名称时,它会将您从端口1433重定向到它为该实例使用的动态端口。我不知道它使用的是动态端口,但是如果你的实例被命名,那么端口将始终是动态的。我不知道1433年我在哪里看到广播,这是我的错误。
要检查动态端口,请查看此处:
根据这些信息,我将代码更改为:
var config = {
userName: 'username',
password: 'password',
server: 'XXXXX',
options: {
port: 49175,
database: 'databasename',
instancename: 'SQLEXPRESS'
}
};
现在一切都很好,希望这有助于某人。
答案 1 :(得分:2)
如果其他人不熟悉SQL Server,并且正在处理此问题,请按照以下步骤在SQL Server配置管理器中启用TCP / IP:
> SQL Server网络配置
> YOURSQLSERVERINSTANCE的协议
> TCP / IP
>启用
您收到如下警告消息:
所做的任何更改都将被保存;但是,在服务停止并重新启动之前,它们不会生效。
我认为这意味着断开与SQL Server Management Studio中的数据库服务的连接并重新连接,但这需要在SQL Server服务选项卡下的SQL Server配置管理器中进行。找到你的SQL Server实例,停止并重新启动它,希望你会变得金色!这对我来说就像一个魅力。奇怪的是,启用命名管道协议似乎没有重启(我可以看到错误消息中的差异),所以我认为它已经停止并根据需要重新启动。
另外,请务必enable SQL Server Browser services。这个和启用TCP / IP并重新启动服务是我的关键。
答案 2 :(得分:1)
如果您仍然遇到此错误,
“ ...'无法连接到服务器:1433 - 连接ECONNREFUSED服务器IP:1433', 代码:'ESOCKET'} “
你已经检查了以下所有内容:
检查您的SQL Server版本。就我而言,我发现我可以使用相同的代码连接到SQL 2012,但不能连接到 SQL server 2016 。似乎SQL Server 2016还不支持繁琐的驱动程序。
答案 3 :(得分:0)
如果启用TCP / IP协议后仍有问题,我建议您检查SQL Server Browser Service是否正在运行。在我的情况下,我花了很多时间,直到我意识到它没有运行。
这个配置对我来说运行良好:
var config = {
user: 'user',
password: 'userPwd',
server: 'localhost',
database: 'myDatabase',
options: {
truestedConnection: true,
instanceName: 'SQLEXPRESS'
}
答案 4 :(得分:0)
答案 5 :(得分:0)
这是完整的代码
const {
Request
} = require('tedious');
var Connection = require('tedious').Connection;
var config = {
server: 'DESKTOP-RU9C12L', //update me
authentication: {
type: 'default',
options: {
userName: 'begaak', //update me
password: 'begaak@123', //update me
}
},
options: {
encrypt: true,
enableArithAbort: true,
integratedSecurity: true,
trustServerCertificate: true,
rowCollectionOnDone: true,
database: 'selvapoc' //update me
}
};
var connection = new Connection(config);
connection.connect(function(err) {
console.log('testing')
// var request = new Request("Select * from products", function(err, rowCount, rows) {
// console.log(rowCount);
// console.log(JSON.stringify(rows))
// });
// connection.execSql(request);
connection.execSql(new Request('SELECT * FROM Products', function(err, rowCount, rows) {
if (err) {
throw err;
}
})
.on('doneInProc', function(rowCount, more, rows) {
console.log(more, rows[0], rowCount); // not empty
}));
});
connection.on('connect', function(err) {
// If no error, then good to proceed.
if (err) console.log(err)
console.log("Connected");
});