2017-06-15 2 views
3

J'essaie de connecter node.js à mssql en mode d'authentification Windows. J'ai installé les modules tedious, mssql et msnodesqlv8, mais je n'arrive toujours pas à comprendre comment ouvrir une connexion.Node.js Connexion avec l'authentification Windows SQL Server

C'est ce que j'ai essayé:

var sql = require('mssql'); 
    var config = { 
    driver: 'msnodesqlv8', 
    server: 'POPPY-GI\\SQLEXPRESS', 
    database: 'NodinSports', 
    options:{ 
    trustedConnection: true, 
    useUTC: true}} 

    sql.connect(config).then(function() { 
    new sql.Request().query('select * from users') 
    .then(function(recordset){ 
    console.log(recordset); 
    }).catch(function(err) { 
    console.log(err);}); 
    }).catch(function(err) { 
    console.log(err);}); 

Après l'exécution, je reçois une longue erreur disant:

`ConnectionError`: Port for `SQLEXPRESS` not found in 
`ServerName`;POPPYGI;`InstanceName;SQLEXPRESS;IsClustered`;No;Version;12.0.2000.8;; 

    at Connection.tedious.once.err (D:\Never Lazy\University\`AN2, SEM 2\WEB\`Projek`\node_modules\`mssql`\lib\`tedious.js:216:17`) 

    at Connection.g (events.js:291:16) 
    at emitOne (events.js:96:13) 
    at Connection.emit (events.js:188:7) 
    at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\connection.js:570:27 
    at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\instance-lookup.js:91:24 
    at Socket.onMessage (D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\sender.js:140:9) 
    at emitTwo (events.js:106:13) 
    at Socket.emit (events.js:191:7) 
    at UDP.onMessage (dgram.js:549:8) 
    code: 'EINSTLOOKUP', 

Je serais très reconnaissant pour toute aide.

FIXES:

En services.msc vérifier si les points suivants sont activés:

SQL Server(*server_name*) -- in my case `SQLEXPRESS` 
SQL Server Browser 
SQL Server Agent(*server_name*) -- if you are using `SQLEXPRESS` this doesn't need to run 

Dans SQL Server Configuration Manager -> Protocoles pour nom_serveur: activer TCP/IP.

Pour vous assurer que tout ira bien, vérifiez le port utilisé par le serveur (SQL Server Configuration Manager -> SQL Native Client Configuration -> Protocoles client ->double-cliquez surTCP/IP -> Port par défaut), et ajouter le port: *your_port* au code var config = { ... }.

Enfin, changer var sql = require('mssql');-var sql = require("mssql/msnodesqlv8");

+0

Est-ce que POPPYGI est un rem serveur d'ote? Le service SQL Browser est-il en cours d'exécution? Pouvez-vous vous connecter en utilisant SSMS à cette instance? Quel port est réellement utilisé par le service (les logs SQL vous le diront)? –

+0

Serveur local, le service SQL Browser est en cours d'exécution, le port est 1433. Je ne comprends pas vraiment ce que vous entendez par "se connecter en utilisant SSMS à cette instance". J'ai ajouté le port: 1433 à la 'config', et maintenant je reçois une erreur disant: 'ConnectionError: La connexion a échoué pour l'utilisateur ''. [...] – Brigitta

+0

Merci pour votre aide, problème résolu.^_^ – Brigitta

Répondre

0

Installez les modules suivants:

"dependencies": { 
    "msnodesqlv8": "^0.4.14", 
    "mssql": "^4.1.0" 
    } 

Ma version de noeud: v8.1.4

const sql = require("mssql/msnodesqlv8"); 

const main = async() => { 
    const pool = new sql.ConnectionPool({ 
    server: "myservername", 
    database: "mydbname", 
    options: { 
     trustedConnection: true 
    } 
    }); 

    await pool.connect(); 

    const request = new sql.Request(pool); 

    const query = `SELECT [FirstName] 
    ,[LastName] 
    ,[Email] 
FROM [Dev].[Users]`; 

    const result = await request.query(query); 

    console.dir(result); 
}; 
main(); 

(Vous pouvez le faire sans versions async ou plus : https://stackoverflow.com/a/40406998/639575)