Node.js MSSQL tedius ConnectionError:无法连接到localhost:1433 - 连接ECONNREFUSED

Mat*_*ier 44 sql-server node.js node-mssql tedious

我正在尝试使用带有mssql连接接口的NodeJS连接到MSSQL 2012 .

尝试连接时,我收到以下错误:

{ [ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED]
  name: 'ConnectionError',
  message: 'Failed to conncet to localhost:1433 - connect ECONNREFUSED',
  code: 'ESOCKET' }
Run Code Online (Sandbox Code Playgroud)

有想法该怎么解决这个吗?

Mat*_*ier 89

解决方案是启用默认禁用的TCP连接.

在此输入图像描述

  • 更新后我必须重新启动 SQL Server 服务,结果成功了! (3认同)
  • 屏幕截图为+1.我以为我启用它是因为我看到SSMS中启用了远程连接,但事实并非如此. (2认同)
  • 您如何在Docker中做到这一点? (2认同)

MMa*_*lke 21

我的情况与马特的​​情况并不完全相同,但他的截图足以让我记住遗漏的东西.

在此输入图像描述

正如这里所说,当您使用SQL Server实例名称连接到它时,您必须运行SQL Server Browser.

options.instanceName要连接的实例名称.SQL Server Browser服务必须在数据库服务器上运行,并且必须可以访问数据库服务器上的UDP端口1444.(无默认值)与options.port互斥.


Pla*_*er1 11

如果启用TCP连接后仍然无法正常配置.这是我自己的配置.

var config = {
    "user": 'admin',
    "password": 'password',
    "server": 'ALBERT-PC',
    "database": 'database_name',
    "port": '61427',
    "dialect": "mssql",
    "dialectOptions": {
        "instanceName": "SQLEXPRESS"
    }
};
Run Code Online (Sandbox Code Playgroud)


小智 8

如果尽管提出了所有建议,仍然有人在努力保持联系。
就我而言,我必须在SQL Server网络配置->协议...-> TCP / IP-> IP地址-> IPAll中手动将TCP端口属性设置为1433。

[1]


小智 5

最佳做法是首先使用查询分析器(SQL Management Studio(Windows)或SQLPro for MSSQL(Mac))使用与您希望通过应用程序使用的相同协议,端口和凭据来验证与SQL Server的连接.

在Management Studio中,格式为Server,Port(例如192.168.1.10,1433); 你可能会使用SQL Server身份验证而不是Windows身份验证.


配置SQL Server的步骤:

如果要使用SQL Server身份验证,请使用混合身份验证进行安装.

设置SQL Server以在固定端口号上侦听TCP:

  • SQL配置管理器SQL Server网络配置
    • {Instance}的协议
      • TCP/IP - 启用(双击)
      • IP地址(在所有需要的接口上)
        • TCP动态端口= BLANK!(不是零)
        • TCP端口 - 1433(或所需端口)


小智 5

就我而言,存在配置问题。这是错误的配置

let config = {
server: 'localhost',
authentication: {
    type: 'default',
    options: {
        userName: 'sa', // update me
        password: 'xxxxx' // update me
    }
},
options: {
    database: 'SampleDB',
    validateBulkLoadParameters:false,
}}
Run Code Online (Sandbox Code Playgroud)

然后我在选项中添加了加密变量。它解决了我的问题。更正了配置

let config = {
server: 'localhost',
authentication: {
    type: 'default',
    options: {
        userName: 'sa', // update me
        password: 'xxxxxx' // update me
    }
},
options: {
    database: 'SampleDB',
    validateBulkLoadParameters:false,
    encrypt: false,
}
Run Code Online (Sandbox Code Playgroud)

}