sql server-Node.js MSSQL tedius ConnectionError:无法连接到本地主机:1433-连接ECONNREFUSED

我正在尝试使用带有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' }

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

Matt Carrier asked 2020-07-30T06:57:17Z
7个解决方案
89 votes

解决方案是启用默认情况下禁用的TCP连接。

enter image description here

Matt Carrier answered 2020-07-30T06:57:31Z
20 votes

我的案件与Matt的案件并不完全相同,但是他的屏幕截图足以记住我所缺少的内容。

enter image description here

就像这里所说的,当您使用SQL Server实例名称连接到它时,您必须运行SQL Server浏览器。

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

MMalke answered 2020-07-30T06:58:01Z
11 votes

如果在启用TCP连接后仍然无法进行配置。 这是我自己的配置。

var config = {
    "user": 'admin',
    "password": 'password',
    "server": 'ALBERT-PC',
    "database": 'database_name',
    "port": '61427',
    "dialect": "mssql",
    "dialectOptions": {
        "instanceName": "SQLEXPRESS"
    }
};
Player1 answered 2020-07-30T06:58:22Z
8 votes

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

[1]

Alen answered 2020-07-30T06:58:50Z
5 votes

最佳实践是首先使用查询分析器(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动态端口=空白! (不为零)
        • TCP端口-1433(或所需端口)
Adam Gering answered 2020-07-30T06:59:54Z
3 votes
**Please follow the connection configuration and little test:**

//Declare global variable
var http = require('http');
var events = require('events');
var nodemailer = require('nodemailer');
var sql = require('mssql');<br/>
var Request = require('tedious').Request;  
var TYPES = require('tedious').TYPES; 
//Create an http server
http.createServer(function(req,res)
{
res.writeHead(200, {'Content-Type': 'text/html'});
 var Connection = require('tedious').Connection; 
//Configure the connection 
    var config = {  
        userName: '<user id>',  
        password: '<password>',  
        server: '<system ip>',  
        options: {database: '<database name>'}  
    };  
    var connection = new Connection(config);  
    connection.on('connect', function(err) {  
        console.log("Connected"); 
        executeStatement();     
    }); 

function executeStatement() {  
        request = new Request("select getdate();", function(err) {  
        if (err) {  
            console.log(err);}  
        });
     var result = "";  
        request.on('row', function(columns) {  
            columns.forEach(function(column) {  
              if (column.value === null) {  
                console.log('NULL');  
              } else {  
                result+= column.value + " ";  
              }  
            });  
            console.log(result);  
            result ="";  
        });  

        connection.execSql(request);  
};
  return res.end();
}).listen(8080);

//在浏览器上发布配置测试:[http:// localhost:8080 /]

Amresh Kumar answered 2020-07-30T07:00:15Z
1 votes

尽管在SQL Management Studio和其他应用程序中使用“本地主机”,但我无法与“本地主机”连接。当我使用计算机名称(网络地址)时,它起作用了!

DaNeSh answered 2020-07-30T07:00:35Z
translate from https://stackoverflow.com:/questions/25577248/node-js-mssql-tedius-connectionerror-failed-to-connect-to-localhost1433-conn