webentwicklung-frage-antwort-db.com.de

Es kann keine Verbindung zu SQL Server mit Node.js und Tedious hergestellt werden

Wenn ich versuche, mithilfe von Node.js und Tedioius eine Verbindung zu einer lokalen SQL Server-Instanz herzustellen, wird der folgende Fehler angezeigt:

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

Hier ist mein Verbindungsobjekt:

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

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

Ich habe überprüft und TCP/IP ist aktiviert und sendet laut Configuration Manager auf Port 1443. Der SQL Server-Browserdienst wird ebenfalls ausgeführt. Wenn dies nicht der Fall ist, kann dies möglicherweise zu Problemen dieser Art führen. Ich habe meine Antiviren- und Firewall deaktiviert und das hat auch nicht geholfen.

Einsichten?

10
loganhuskins

Also, was ich vermute, passiert, dass, obwohl Tedious Sie Instanznamen in "Optionen" einschließen lässt, es entweder nicht verwendet oder nicht verwendet werden kann, wie es verwendet werden muss. Nachdem Sie einige Nachforschungen angestellt haben, sollten Sie den Instanznamen für SQL Server eingeben und von Port 1433 zu dem für diese Instanz verwendeten dynamischen Port umgeleitet werden. Ich wusste nicht, dass ein dynamischer Port verwendet wird, aber wenn Ihre Instanz den Namen "Port" trägt, ist der Port immer dynamisch. Ich weiß nicht, wo ich es 1433 gesehen habe, das war mein Fehler.

Um den dynamischen Port zu überprüfen, schauen Sie hier:

 enter image description here

Aus diesen Informationen habe ich meinen Code folgendermaßen geändert:

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

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

Jetzt ist alles gut, hoffe das hilft jemandem.

15
loganhuskins

Wenn jemand anders mit SQL Server noch nicht so vertraut ist wie ich und sich mit diesem Problem befasst, führen Sie die folgenden Schritte aus, um TCP/IP in SQL Server Config Manager zu aktivieren:

> SQL Server-Netzwerkkonfiguration

> Protokolle für YOURSQLSERVERINSTANCE

> TCP/IP

> Aktivieren

sie erhalten eine Warnmeldung, die folgendermaßen aussieht:

Alle vorgenommenen Änderungen werden gespeichert. Sie werden jedoch erst wirksam, wenn der Dienst beendet und neu gestartet wird.

Ich habe das so verstanden: Trennen Sie die Verbindung zum Datenbankdienst in SQL Server Management Studio und stellen Sie die Verbindung erneut her. Dies muss jedoch im SQL Server-Konfigurations-Manager auf der Registerkarte SQL Server-Dienste geschehen. Suchen Sie Ihre SQL Server-Instanz, stoppen Sie sie und starten Sie sie erneut. Hoffentlich sind Sie goldrichtig! Dies wirkte wie ein Zauber für mich. Das Aktivieren des Named Pipes-Protokolls schien seltsamerweise ohne Neustart zu funktionieren (ich konnte den Unterschied in der Fehlermeldung erkennen), und ich war mir sicher, dass es bei Bedarf angehalten und neu gestartet wurde.

Stellen Sie außerdem sicher, dass die SQL Server-Browserdienste aktiviert sind . Dies und das Aktivieren von TCP/IP und das Neustarten des Dienstes waren die Schlüssel für mich.

1

Wenn Sie immer noch diesen Fehler haben,

" ... 'Verbindung zum Server fehlgeschlagen: 1433 - ECONNREFUSED Server IP verbinden: 1433', Code: 'ESOCKET'} "

und Sie haben Folgendes überprüft:

  1. Aktivieren Sie TCP/IP
  2. Öffnen Sie Port 1433
  3. Konfigurationssetup korrekt (Datenbank, Server, Benutzername und Passwort)
  4. Keine dynamischen Ports konfiguriert

Überprüfen Sie Ihre SQL Server-Version. In meinem Fall stellte ich fest, dass ich eine Verbindung zu SQL 2012 herstellen konnte, jedoch nicht SQL Server 2016 mit demselben Code. Offenbar wird SQL Server 2016 vom langwierigen Treiber noch nicht unterstützt.

1
halfDigital

Wenn Sie nach dem Aktivieren des TCP/IP-Protokolls weiterhin Probleme haben, sollten Sie überprüfen, ob der SQL Server-Browserdienst ausgeführt wird. In meinem Fall verbrachte ich viel Zeit, bis mir klar wurde, dass es nicht lief.

Diese Konfiguration läuft gut für mich:

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