飘落の枫 2021-09-26 09:30 采纳率: 33.3%
浏览 262
已结题

NodeJs使用mssql模块连接sql server数据库报错

我在NodeJs中使用mssql模块连接sql server数据库报错。报错:

ConnectionError: Failed to connect to 111.222.333.44\SQLSERVER2014 in 15000ms
    at E:\nodejs\node_modules\mssql\lib\tedious\connection-pool.js:71:17
    at Connection.onConnect (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1043:9)
    at Object.onceWrapper (node:events:514:26)
    at Connection.emit (node:events:394:28)
    at Connection.emit (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1071:18)
    at Connection.connectTimeout (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1530:10)
    at Timeout._onTimeout (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1475:12)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7) {
  code: 'ETIMEOUT',
  originalError: ConnectionError: Failed to connect to 111.222.333.44\SQLSERVER2014 in 15000ms
      at ConnectionError (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\errors.js:13:12)
      at Connection.connectTimeout (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1530:54)
      at Timeout._onTimeout (E:\nodejs\node_modules\mssql\node_modules\tedious\lib\connection.js:1475:12)
      at listOnTimeout (node:internal/timers:557:17)
      at processTimers (node:internal/timers:500:7) {
    code: 'ETIMEOUT'

路由JS代码如下:

var sql = require('mssql');
    var dbConfig = {
        user: 'sa',
        password: 'sa@123,',
        server: '111.222.333.44\\SQLSERVER2014',
        database: 'PhotovoltaicDB',
        port:5202,
        pool: {
            max: 10,
            min: 0,
            idleTimeoutMillis: 30000
        }
    };
    // 查询所有的用户信息
    function getAllUsers() {
        var conn = new sql.ConnectionPool(dbConfig);
        //console.log(conn);
        var req = new sql.Request(conn);
        conn.connect(function (err) {  //就在这句报错,应该是不知道为什么连接失败
            if (err) {
                console.log(err);
                return;
            }
            // 查询t_user表
            req.query("SELECT * FROM t_user", function (err, recordset) {
                if (err) {
                    console.log(err);
                    return;
                }
                else {
                    console.log(recordset);
                }
                conn.close();
            });
        });
    }
    // 查询所有的用户信息
    getAllUsers();

sql server数据库地址没有问题,需要填写数据库实例名,而且密码带@和,两个特殊字符,所以不知道咋用连接串的形式进行拼接。NodeJs电脑使用sql server软件直接可以远程连接入数据库。试过好几种方法了,都是在连接的时候报错。求碰到过或者知道怎么解决的帮忙解答一下。对了,我sql server要连接的2014版本。用的mssql是直接npm上引入的,引入的时候也没有报错。而且也试了删除重新引入。

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2021-09-26 09:37
    关注

    看了下mssql模块文档,server指定为ip\实例名这种内容,需要为默认的端口1433,不能改其他端口,也不能配置port。

    alt


    如果指定在server配置成ip,端口\实例名 这种内容,会出现getaddrinfo ENOTFOUND (localdb) at Connection.tedious.once.err错误

    可以安装msnodesqlv8模块,使用和mssql一样,支持server配置为ip,端口\实例名,端口不要设置

    alt

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 修改了问题 9月26日
  • 修改了问题 9月26日
  • 展开全部

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器