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

log*_*ins 11 javascript sql-server tcp node.js tedious

当我尝试使用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' }
Run Code Online (Sandbox Code Playgroud)

这是我的连接对象:

var config = {
  userName: 'username',
  password: 'password',
  server: 'XXXXX',

  options: {
    database: 'databasename',
    instancename: 'SQLEXPRESS'
  }
};
Run Code Online (Sandbox Code Playgroud)

我已根据Configuration Manager检查并启用了TCP/IP并在端口1443上进行广播.SQL Server Browser服务也在运行,如果没有,我读到的可能会导致此类问题.我已禁用我的防病毒和防火墙,这也没有帮助.

任何见解?

log*_*ins 16

所以我猜测的是,尽管Tedious允许你在'options'中包含实例名称,但它要么不使用它,要么不能使用它,因为它需要被使用.在做了一些研究后,应该发生的事情是,当您为SQL Server提供实例名称时,它会将您从端口1433重定向到它为该实例使用的动态端口.我不知道它使用的是动态端口,但是如果你的实例被命名,端口将始终是动态的.我不知道我在哪里看到它在1433广播,这是我的错误.

要检查动态端口,请在此处查看:

在此输入图像描述

根据这些信息,我将我的代码更改为:

var config = {
  userName: 'username',
  password: 'password',
  server: 'XXXXX',

  options: {
    port: 49175,
    database: 'databasename',
    instancename: 'SQLEXPRESS'
  }
};
Run Code Online (Sandbox Code Playgroud)

一切都很好,希望这有助于某人.

  • 我发现instanceName的大写很重要(需要大写N) (2认同)