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

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日
  • 展开全部

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: