web-dev-qa-db-fra.com

Impossible de se connecter à SQL Server avec Node.js et Tedious

Lorsque j'essaie d'utiliser Node.js et Tedioius pour me connecter à une instance locale de SQL Server, le message d'erreur suivant s'affiche:

{ [ConnectionError: Failed to connect to XXXXX:1433 - connect ECONNREFUSED]
  name: 'ConnectionError',
  message: 'Failed to connect to XXXXX:1433 - connect ECONNREFUSED',
  code: 'ESOCKET' }

Voici mon objet de connexion:

var config = {
  userName: 'username',
  password: 'password',
  server: 'XXXXX',

  options: {
    database: 'databasename',
    instancename: 'SQLEXPRESS'
  }
};

J'ai vérifié et TCP/IP est activé et diffuse sur le port 1443 conformément à Configuration Manager. Le service SQL Server Browser est également en cours d'exécution, ce que j'ai lu peut être à l'origine de ce type de problème sinon. J'ai désactivé mon antivirus et mon pare-feu, ce qui n'a pas aidé non plus.

Une idée?

10
loganhuskins

Donc, ce que je suppose, c'est que même si Tedious vous permet d'inclure le nom de l'instance dans les "options", il ne l'utilise pas ou ne peut pas l'utiliser car il doit être utilisé. Après des recherches, vous devez savoir que lorsque vous donnez le nom de l'instance à SQL Server, il vous redirige du port 1433 vers le port dynamique qu'il utilise pour cette instance. Je ne savais pas qu'il utilisait un port dynamique, mais si votre instance est nommée, le port sera toujours dynamique. Je ne sais pas où j'ai vu l'émission sur 1433, c'est mon erreur.

Pour vérifier le port dynamique, regardez ici:

 enter image description here

De cette information, j'ai changé mon code à ceci:

var config = {
  userName: 'username',
  password: 'password',
  server: 'XXXXX',

  options: {
    port: 49175,
    database: 'databasename',
    instancename: 'SQLEXPRESS'
  }
};

Tout va bien maintenant, espérons que cela aidera quelqu'un.

15
loganhuskins

Si quelqu'un d'autre est nouveau pour SQL Server comme moi et traite ce problème, une fois que vous activez TCP/IP dans le Gestionnaire de configuration SQL Server en procédant comme suit:

> Config réseau SQL Server

> Protocoles pour YOURSQLSERVERINSTANCE

> TCP/IP

> Activer

vous obtenez un message d'avertissement qui ressemble à ceci:

Toutes les modifications apportées seront enregistrées. toutefois, ils ne prendront effet que lorsque le service sera arrêté et redémarré.

Je pensais que cela signifiait déconnecter du service de base de données dans SQL Server Management Studio et le reconnecter, mais cela devait se produire dans le Gestionnaire de configuration SQL Server sous l'onglet Services SQL Server. Trouvez votre instance SQL Server, arrêtez-la et redémarrez-la, et j'espère que vous serez en or! Cela a fonctionné comme un charme pour moi. Bizarrement, l'activation du protocole Named Pipes semblait fonctionner sans redémarrage (je pouvais voir la différence dans le message d'erreur), j'ai donc pensé à coup sûr qu'il s'était arrêté et redémarré selon les besoins.

Veillez également à activez les services du navigateur SQL Server également. Ceci, l'activation de TCP/IP et le redémarrage du service étaient les clés pour moi.

1
no_stack_dub_sack

Si vous avez toujours cette erreur,

" ... 'Echec de la connexion au serveur: 1433 - connexion du serveur ECONNREFUSED IP: 1433', code: 'ESOCKET'} "

et vous avez vérifié tous les éléments suivants:

  1. Activer TCP/IP
  2. Port ouvert 1433
  3. Configuration correctement configurée (base de données, serveur, nom d'utilisateur et mot de passe}
  4. Pas de ports dynamiques configurés

Vérifiez votre version du serveur SQL. Dans mon cas, j'ai découvert que je pouvais me connecter à SQL 2012, mais pas SQL server 2016 avec le même code. Il semble que SQL Server 2016 n'est pas encore pris en charge par le pilote fastidieux.

1
halfDigital

Si vous rencontrez toujours des problèmes après l'activation du protocole TCP/IP, je vous suggère de vérifier que le service SQL Server Browser est en cours d'exécution. Dans mon cas, j'ai passé beaucoup de temps jusqu'à ce que je réalise que ça ne tournait pas.

Cette configuration fonctionne bien pour moi:

 var config = {
     user: 'user',
     password: 'userPwd',
     server: 'localhost',
     database: 'myDatabase',
     options: {
         truestedConnection: true,
         instanceName: 'SQLEXPRESS'
    }
0
MarceloRB