首页 > 解决方案 > 如何使用 node.js 在 Windows 身份验证模式下连接 SQL Server

问题描述

我想使用带有“mssql”包的 node.js 以 Windows 身份验证模式连接 SQL Server。下面的代码通过提供用户名和密码与 SQL Server 身份验证一起工作。

var sql = require("mssql");
            // config for your database
            var config = {
                server: XXXX', 
                database: 'XXX' ,
                options: {
            trustedconnection:true,
                    encrypt: false, // Use this if you're on Windows Azure
                }
            };

    function GetDatatable()
{
    return new Promise( (resolve, reject) => {
        sql.connect(config, function (err) {
            if (err) console.log(err);
            // create Request object
            var request = new sql.Request();
            // query to the database and get the records
            var query='select Id,statusCode,from test';

            request.query(query, function (err, recordset) {
            var recordSetItem = recordset.recordset;
            for(var i=0;i<recordSetItem.length;i++) {
                var row=recordSetItem[i];
                var basePath=row['baseUri'];
                if(fullPath.lastIndexOf(basePath) > -1)
                {
                    operationId=row['Id'];
                }
            }
            if(operationId)
            {
                query='select * from tbltest';
                request.query(query, function (err, scenarioRecordset) {
                var subRecordSet = scenarioRecordset.recordset;
                var xmlResponse= validateScenario (subRecordSet,fullPath,bodyRequest);
                console.log(xmlResponse);
                // let responseObject = {
                //     "id": "1",
                //     "statusCode": "200"
                // };
                resolve('responseObject');
                });
            }
            });
        });
});

收到错误消息“登录失败”

标签: node.jssql-server

解决方案


我相信你需要使用 msnodesqlv8 模块,你必须安装

npm install msnodesqlv8

然后(例如):

const sql = require('mssql/msnodesqlv8')

const pool = new sql.ConnectionPool({
    database: 'database',
    server: 'localhost',
    options: {
        trustedConnection: true
    }
})

async function testConnection() {
    await pool.connect();
    let result = await pool.request().query("select 42 as the_answer_to_life_the_universe_and_everything");
    console.log("Result: ", result);
}

testConnection();

有关更多信息,请参见此处:mssql v8driver


推荐阅读