无法使用Node.js和Tedious连接到SQL Server

当我尝试使用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' } }; 

我已经检查和TCP / IP已启用和端口1443根据configurationpipe理器广播。 SQL Server浏览器服务也在运行,我读到的可能是这种types的问题,如果没有。 我禁用了我的防病毒和防火墙,这也没有帮助。

任何见解?

所以我所猜测的是即使Tedious让你在'options'中包含实例名称,它也不会使用它,也不能使用它,因为它需要被使用。 在做了一些研究之后,应该发生什么情况是,当您向SQL Server提供实例名称时,会将您从端口1433redirect到该实例正在使用的dynamic端口。 我不知道它是使用dynamic端口,但如果您的实例被命名,端口将始终是dynamic的。 我不知道1433年在哪里看到它的广播,那是我的错误。

要检查dynamic端口,请看这里:

在这里输入图像描述

从这些信息中,我改变了我的代码:

 var config = { userName: 'username', password: 'password', server: 'XXXXX', options: { port: 49175, database: 'databasename', instancename: 'SQLEXPRESS' } }; 

现在一切都好,希望这可以帮助别人。

如果你仍然有这个错误,

…”无法连接到服务器:1433 – 连接ECONNREFUSED服务器IP:1433',代码:'ESOCKET'}

你已经检查了以下所有内容:

  1. 启用TCP / IP
  2. 打开1433端口
  3. configuration正确设置(数据库,服务器,用户名和密码)
  4. 没有configurationdynamic端口

检查你的SQL服务器版本。 就我而言,我发现我可以连接到SQL 2012,但不能使用相同的代码连接SQL Server 2016 。 看起来SQL Server 2016并不是繁琐的驱动程序所支持的。

如果您在启用TCP / IP协议后仍然遇到问题,我build议您检查SQL Server Browser Service是否正在运行。 在我的情况下,我花了很多时间,直到我意识到它没有运行。

这个configuration适合我:

  var config = { user: 'user', password: 'userPwd', server: 'localhost', database: 'myDatabase', options: { truestedConnection: true, instanceName: 'SQLEXPRESS' }