连接到SQL Server时超时错误。连接错误。在15000ms内无法连接到servername/instancename。

问题描述 投票:0回答:1

错误代码是代码 ETIMEOUT. 我使用的是SQL Server 2014,NodeJs版本v12.16.2,我在Visual Studio Code中运行这段代码。

我已经创建了数据库,表也创建了一些记录。对于服务器名称,我也尝试过给出FQDN,但没有成功。

这是代码片段。

const express = require('express');
const app = express();
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
app.get('/', function(req, res) {
   res.send('<hHii</h');
});
const sql = require('mssql');
var config = {
   user: 'domain\username',
   password: 'mypwd',
   server: 'servername',
   host: 'hostname',
   port: '1433',
   driver: 'tedious',
   database: 'DBname',
   options: {
      instanceName: 'instancename'
   }
};
sql.connect(config, function(err) {
   if (err)
      console.log(err);
   let sqlRequest = new sql.Request();
   //var sqlRequest = new sql.Request(connection)
   let sqlQuery = 'SELECT * from TestTable';
   sqlRequest.query(sqlQuery, function(err, data) {
      if (err) console.log(err);
      console.log(data);
      //console.table(data.recordset);
      // console.log(data.rowAffected);
      //console.log(data.recordset[0]);
      sql.close()
   });
});
const webserver = app.listen(5000, function() {
   console.log('server is up and running....');
});

错误:

tedious deprecated The default value for `config.options.enableArithAbort` will change from `false` to `true` in the next major version of `tedious`. Set the value to `true` or`false` explicitly to silence this message.   

node_modules\mssql\lib\tedious\connection-pool.js:61:23  
server is up and running....  

ConnectionError: Failed to connect to servername\instantname in 15000ms

at Connection.<anonymous(..\SQL\Sample\sample\node_modules\mssql\lib\tedious\connection-pool.js:68:17)  
at Object.onceWrapper (events.js:417:26)  
at Connection.emit (events.js:310:20)  
at Connection.connectTimeout (..\SQL\Sample\sample\node_modules\tedious\lib\connection.js:1195:10)  
at Timeout._onTimeout (..\SQL\Sample\sample\node_modules\tedious\lib\connection.js:1157:12)  
at listOnTimeout (internal/timers.js:549:17)  
at processTimers (internal/timers.js:492:7) {  
   code: 'ETIMEOUT',
   originalError: ConnectionError: Failed to connect to INPUNPSURWADE\DA in 15000ms

   at ConnectionError (..\SQL\Sample\sample\node_modules\tedious\lib\errors.js:13:12)  
   at Connection.connectTimeout (..\SQL\Sample\sample\node_modules\tedious\lib\connection.js:1195:54)  
   at Timeout._onTimeout (..\SQL\Sample\sample\node_modules\tedious\lib\connection.js:1157:12)  
   at listOnTimeout (internal/timers.js:549:17)  
   at processTimers (internal/timers.js:492:7) {  
      message: 'Failed to connect to servername\instantname in 15000ms',
      code: 'ETIMEOUT'
    },
    name: 'ConnectionError'
  }

ConnectionError: Connection is closed.

at Request._query (..\SQL\Sample\sample\node_modules\mssql\lib\base\request.js:462:37)  
at Request._query (..\SQL\Sample\sample\node_modules\mssql\lib\tedious\request.js:346:11)  
at Request.query (..\SQL\Sample\sample\node_modules\mssql\lib\base\request.js:398:12)  
at Immediate.<anonymous(..\SQL\Sample\sample\index.js:43:12)      
at processImmediate  (internal/timers.js:458:21) {
   code: 'ECONNCLOSED',  
   name: 'ConnectionError'  
}
sql node.js connection connection-timeout
1个回答
0
投票

你可能在主机端口上打错了,或者服务器没有监听外部接口(可能配置成只监听127.0.0.1)。

检查服务器是否在监听传入的连接,在终端中运行以下内容,如果显示 "Unable to connect to remote host: Connection refused",说明主机在那里,但没有监听端口。

telnet <hostname> <port>

(仅限maclinux)如果它说 "无法连接到远程主机:连接被拒绝",这意味着主机在那里,但它没有监听端口.如果它说 "无法连接到远程主机:连接超时",那么主机可能不在那里,不监听端口.

你可能还想检查一下你的防火墙是否允许连接到该服务器。

© www.soinside.com 2019 - 2024. All rights reserved.