Comment se connecter à SQL Server avec l'authentification windows à partir de Node.JS utilisant le module mssql
[ConnectionError: Login failed for user ''. The user is not associated with a trusted SQL Server connection.]
name: 'ConnectionError',
message: 'Login failed for user ''. The user is not associated with a trusted SQL Server connection.',
code: 'ELOGIN' }
Voici mon code:
config = {
server : "localhostMSSQLSERVER",
database : "mydatabase",
port : 1433
}
function loadDepts() {
var conn = new sql.Connection(config);
var request = sql.Request(conn);
conn.connect(function(err) {
if (err) {
console.log(err);
return;
}
request.query("select deptid, deptname from departments", function(err, table) {
if (err) {
console.log(err);
return;
}
else {
console.log(table);
}
conn.close();
});
});
}
loadDepts();
5 réponses
je n'ai jamais été en mesure d'obtenir mssql
+ de l'authentification windows pour travailler pour un de mes projets. Essayez edge
et edge-sql
- il a travaillé pour moi. assurez-vous d'installer les paquets nécessaires.
https://github.com/tjanczuk/edge
https://github.com/tjanczuk/edge-sql
A partir de là, c'est joli steamlined.
var edge = require('edge');
var params = {
connectionString: "Server=YourServer;Database=YourDB;Integrated Security=True",
source: "SELECT TOP 20 * FROM SampleData"
};
var getData = edge.func( 'sql', params);
getData(null, function (error, result) {
if (error) { console.log(error); return; }
if (result) {
console.log(result);
}
else {
console.log("No results");
}
});
EDIT
Bien... 10 jours après ma réponse originale à cette question, apparemment mssql
ajout de Windows Auth au paquet. Ils ont entendu nos cris :) Voir ici. Je ne l'ai pas encore testé, mais il est officiellement dans mon arriéré pour tester l'intégration. J'en ferai part.
FWTW, if mssql
s'adapte à vos besoins, je voudrais aller avec elle, comme 1) edge-sql
est en sommeil depuis 2 ans et 2) le donateur principal a dit qu'il avait les projets de gauche comme celui-ci"dans le soin des mains de Microsoft", puisqu'il n'y travaille plus.
EDIT 2
cela continue de recevoir des notes positives et il y a des commentaires disant que certains des exemples de code des autres réponses ne fonctionnent pas ou ne fonctionnent pas sur Windows.
C'est mon code en utilisant mssql
, travaillant sur Windows, avec msnodesqlv8
également installés:
var sql = require('mssql/msnodesqlv8');
var config = {
driver: 'msnodesqlv8',
connectionString: 'Driver={SQL Server Native Client XX.0};Server={SERVER\NAME};Database={dbName};Trusted_Connection={yes};',
};
sql.connect(config)
.then(function() {
...profit...
})
.catch(function(err) {
// ... connect error checks
});
comme c'est une réponse assez visible, j'ai voulu ajouter un extrait de code qui a fonctionné pour moi avec une connexion de confiance. Obtenu à partir de getglad édité réponse.
const sql = require("mssql");
require("msnodesqlv8");
const conn = new sql.Connection({
database: "db_name",
server: "server_name",
driver: "msnodesqlv8",
options: {
trustedConnection: true
}
});
conn.connect().then(() => {
// ... sproc call, error catching, etc
// example: https://github.com/patriksimek/node-mssql#request
});
en utilisant la connexion de confiance, j'ai pu exécuter les procédures stockées, enregistrer la sortie, et fermer la connexion sans aucun problème, et msnodesqlv8 a été mis à jour plus récemment que tous les autres pilotes (la dernière version date d'octobre 2016 et date du 03/11/2016), de sorte que cela semble être un choix sécuritaire.
Et voici un exemple d'utilisation mssql@4.0.4. Les seuls changements sont le require initial, qui tirent dans msnodesqlv8 de l'intérieur de mssql, et sql.La connexion est maintenant sql.ConnectionPool. Vous devrez également modifier vos appels de procédure stockés puisque la réponse est différente, noté ici. C'est la réponse de Jon puisqu'il a mis à jour la mienne avant moi!
const sql = require("mssql/msnodesqlv8");
const conn = new sql.ConnectionPool({
database: "db_name",
server: "server_name",
driver: "msnodesqlv8",
options: {
trustedConnection: true
}
});
conn.connect().then(() => {
// ... sproc call, error catching, etc
// example: https://github.com/patriksimek/node-mssql#request
});
moi aussi j'ai eu du mal pendant un certain temps sur la façon d'utiliser MSSQL + Windows Auth, voici comment je l'ai obtenu pour travailler sur mon projet.
Comme indiqué dans le MSSQL documentation, vous avez besoin msnodesqlv8 installé aussi.
npm install msnodesqlv8
Maintenant, dans la suite réponse D'Aaron Ballard, vous l'utilisez comme ceci:
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)
})
})
comme note, j'ai essayé d'ajouter ceci comme commentaire sur la réponse D'Aaron, car la mienne est juste un complément / mise à jour à la sienne, mais je ne avoir assez de réputation pour le faire.
j'ai essayé beaucoup de variation et c'est ma solution complète.
Je suis à l'aide de SQL server Express.
Je me connecte, en premier lieu, à la maître base de données uniquement.
Vous avez seulement BESOIN de changement "YOURINSTANCE\ \ SQLEXPRESS".
(Assurez-vous de maintenir le double-slash ci-dessus!!!)
Je suis à l'aide de SÉCURITÉ INTÉGRÉE trop.
La requête ne repose sur rien du tout (dans votre base de données).
Vous devez ajouter vos paquets de noeuds
= = > NPM INSTALL MSSQL et
= = > NPM INSTALL msnodesqlv8
Avec un peu de chance, vos problèmes de connexion appartiendront au passé.
Peut-être.
S'il vous plaît.
// 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);
});
j'ai eu du mal à me connecter avec le serveur mssql qui tourne dans le serveur windows distant en utilisant mode d'authentification windows . Puis j'ai trouvé la solution juste utilisée comme code ci-dessous.
sql.connect("Data Source=172.25.x.x,1433;User Id=CSLx\Name;Password=xxxxxx1234;Initial Catalog=giveTHedataabseNamel;Integrated Security=True",function(err){ }