How to connect to SQL Server with windows authentication from Node.JS using mssql module

前端 未结 12 1258
忘掉有多难
忘掉有多难 2020-11-27 13:57

Hi I\'m unable to connect to SQL server that is using windows authentication in node js. I\'m using the mssql module. The error message is :

[ConnectionError         


        
相关标签:
12条回答
  • 2020-11-27 14:39

    I've tried many variations and this is my complete solution.
    I'm using SQL server Express.
    I'm connecting, in the first instance, to the MASTER database only.
    You only NEED to change "YOURINSTANCE\\SQLEXPRESS".
    (Be sure to maintain the double-slash above!!!)
    I'm using INTEGRATED SECURITY too.
    The query relies on nothing at all (in your database).
    You need to add your node packages
      ==> NPM INSTALL MSSQL and
      ==> NPM INSTALL msnodesqlv8
    Hopefully, your connection issues will be a thing of the past.
    Maybe.
    Please.

    // More here -> https://www.npmjs.com/package/mssql
    var sql = require('mssql/msnodesqlv8');
    var config = {
      connectionString: 'Driver=SQL Server;Server=YOURINSTANCE\\SQLEXPRESS;Database=master;Trusted_Connection=true;'
    };
    sql.connect(config, err => {
      new sql.Request().query('SELECT 1 AS justAnumber', (err, result) => {
        console.log(".:The Good Place:.");
        if(err) { // SQL error, but connection OK.
          console.log("  Shirtballs: "+ err);
        } else { // All is rosey in your garden.
          console.dir(result);
        };
      });
    });
    sql.on('error', err => { // Connection borked.
      console.log(".:The Bad Place:.");
      console.log("  Fork: "+ err);
    });
    
    0 讨论(0)
  • 2020-11-27 14:39

    Below code is working for me......

    const sql = require('mssql/msnodesqlv8')
    // config for your database
    var config = {
        driver: 'msnodesqlv8',
        server: 'serverNAme\\SQLEXPRESS', 
        database: 'Learn' , 
        options: {
            trustedConnection: true
        }
    };
    
    0 讨论(0)
  • 2020-11-27 14:39

    This version doesn't need a username or password.

    To use windows authentication I installed mssql and msnodesqlv8.

    Then in my app.js file:

    const mssql = require('mssql/msnodesqlv8'); 
    

    Note it is mssql not sql if you're using this example.

    var config = {
      database:'YOUR DATABASE NAME',  
      server: 'localhost\\SQLEXPRESS',
      driver: 'msnodesqlv8',
      options: {
        trustedConnection: true,
        enableArithAbort: true
      }
    };
    

    You need to change the database name in config. Other than that it should work. My example:

    app.get('/', function (req, res) {
    
            mssql.connect(config, function (err) {
        
                if (err) console.log(err);
                var request = new mssql.Request();
                request.query('select * from dbo.visit', function (err,  result) {
                    if(err) console.log(err);
                    console.log(result);
                });
        
            });
        
     });
    
    0 讨论(0)
  • 2020-11-27 14:41

    I have been struggling too for some time about how to use mssql + Windows Auth, here is how i got it to work on my project.

    As pointed out in the mssql documentation, you need msnodesqlv8 installed too.

    npm install msnodesqlv8
    

    Now, following on Aaron Ballard's answer, you use it like this:

    const sql = require('mssql/msnodesqlv8')
    
    const pool = new sql.ConnectionPool({
      database: 'database',
      server: 'server',
      driver: 'msnodesqlv8',
      options: {
        trustedConnection: true
      }
    })
    
    pool.connect().then(() => {
      //simple query
      pool.request().query('select 1 as number', (err, result) => {
            console.dir(result)
        })
    })
    

    As a note, i tried to add this as a comment on Aaron's answer, as mine is just a complement/update to his, but i don't have enough reputation to do so.

    0 讨论(0)
  • 2020-11-27 14:43

    I could only get a Trusted Connection working using msnodesqlv8 (limited to Windows environments) with a connection string (rather than a config object).

    const sql = require("msnodesqlv8");
    
    const connectionString = function(databaseName) {
        return "Server=.;Database=" + databaseName + ";Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0}";
    }
    
    sql.query(connectionString("DatabaseName"), "SELECT * FROM dbo.Table1" , (err, recordset) => {
        if(err) {
            // Do something with the err object.
            return;
        }
    
        // else
        // Do something with the recordset object.
        return;
    });
    
    0 讨论(0)
  • 2020-11-27 14:43

    I've just add domain: "DNAME", in config, and as result this config helps me connect to MS SQL with windows auth.

    const config = {
                driver: 'msnodesqlv8',
                domain: "DNAME",
                user: 'username',
                password: 'pass',
                server: '7.6.225.22',
                database: 'DBNAME',
                requestTimeout: 3600000, //an hour
                options: {
                    trustedConnection: true
                },
                debug: true,
                parseJSON: true
            };
    
    0 讨论(0)
提交回复
热议问题