Tedious: SQL Server 2012 ECONNREFUSED

Erstellt am 8. Dez. 2012  ·  20Kommentare  ·  Quelle: tediousjs/tedious

Mit den neuesten nodejs und mühsamen Versionen und dem folgenden Code:

var Connection = require('langweilig').Connection;
var Request = require('mühsam').Request;

var config =
{
Server: '192.168.1.113',
Benutzername: 'meinBenutzername',
Passwort: 'meinPasswort',
Optionen:
{
Datenbank: 'MeineDatenbank',
Hafen: '1433',
verschlüsseln: wahr,-
Treiber: 'SQL Server Native Client 11.0'
},
debuggen:
{
Paket: wahr,-
Daten: wahr,
Nutzlast: wahr,
Zeichen: wahr,-
log: wahr
}
};

var-Verbindung = neue Verbindung (config);

connection.on('connect', verbunden);
connection.on('infoMessage', infoError);
connection.on('errorMessage', infoError);
Verbindung.on('Ende', Ende);
connection.on('debug', debug);

Funktion verbunden(err)
{
console.log('verbunden=> ' + err);
}

Funktion infoError(info)
{
console.log('infoError=> ' + info);
}

Funktionsdebug (Nachricht)
{
console.log('debug=> ' + Nachricht);
}

Funktion Ende()
{
}

Ich erhalte folgende Fehlermeldung, nachdem ich es ausgeführt habe:

Knoten test_sqlserver_tedious.js
debug=> Verbindung zu 192.168.1.113:1433 - fehlgeschlagen Fehler: Verbindung ECONNREFUSED
debug=> Zustandsänderung: Connecting -> Final
debug=> Verbindung zu 192.168.1.113:1433 geschlossen
debug=> Zustandsänderung: Final -> Final

Irgendwelche Ideen? Ich könnte Ihnen helfen, die Quelle zu testen, wenn Sie mir zeigen, wie.

Vielen Dank

Hilfreichster Kommentar

ECONNREFUSED schlägt vor, dass 192.168.1.113 Port 1433 nicht überwacht.

Hat die SQL Server-Instanz definitiv TCP aktiviert?
Können Sie telnet auf Port 1433 auf 192.168.1.113 (von dem System, das Sie mühsam verwenden)? Wenn nicht, können Sie direkt von 192.168.1.113 aus zu Port 1433 telnet? Wenn nein, deutet dies darauf hin, dass der SQL Server den Port nicht überwacht. Wenn ja, deutet dies darauf hin, dass etwas (vielleicht eine Firewall) die Ursache des Problems ist.

Alle 20 Kommentare

ECONNREFUSED schlägt vor, dass 192.168.1.113 Port 1433 nicht überwacht.

Hat die SQL Server-Instanz definitiv TCP aktiviert?
Können Sie telnet auf Port 1433 auf 192.168.1.113 (von dem System, das Sie mühsam verwenden)? Wenn nicht, können Sie direkt von 192.168.1.113 aus zu Port 1433 telnet? Wenn nein, deutet dies darauf hin, dass der SQL Server den Port nicht überwacht. Wenn ja, deutet dies darauf hin, dass etwas (vielleicht eine Firewall) die Ursache des Problems ist.

Ich bekomme den Fehler:

debug=> Verbindung zu undefined:1433 - fehlgeschlagen Fehler: Verbindung ECONNREFUSED
debug=> Zustandsänderung: Connecting -> Final
debug=> Verbindung zu undefined:1433 geschlossen
debug=> Zustandsänderung: Final -> Final

    debug=> connection to undefined:1433 closed

Das undefined sieht verdächtig aus. Ich würde erwarten, dort den Servernamen oder die IP-Adresse zu sehen.

dbServer: 192.168.11.8\SQLEXPRESS2008
dbPort: 1433

@flybluewolf bitte

OK, es scheint jetzt eine Verbindung herzustellen. Aber wenn ich versuche, eine einfache Auswahl zu machen, hängt es einfach.

Hier ist die Debug-Ausgabe:

Debugger lauscht auf Port 51981
debug=> verbunden mit 127.0.0.1:1433
debug=> Zustandsänderung: Connecting -> SentPrelogin
debug=> Statusänderung: SentPrelogin -> SentLogin7WithStandardLogin
infoError=> [Objekt Objekt]
infoError=> [Objekt Objekt]
debug=> Paketgröße geändert von 4096 auf 4096
debug=> Zustandsänderung: SentLogin7WithStandardLogin -> LoggedInSendingInitialSql
debug=> Zustandsänderung: LoggedInSendingInitialSql -> LoggedIn

Hier ist mein Code:

var Connection = require('langweilig').Connection;
var Request = require('mühsam').Request;

var config =
{
Server: "127.0.0.1",
Benutzername: "Benutzername",
Passwort: "Benutzerpasswort",
Datenbank: "MeineDatenbank",
Optionen:
{
Datenbank: "MeineDatenbank",
// Port: "1433",
// verschlüsseln: wahr,
// Treiber: "SQL Server Native Client 11.0"
},
debuggen:
{
Paket: wahr,-
Daten: wahr,
Nutzlast: wahr,
Zeichen: wahr,-
log: wahr
}
};

var-Verbindung = neue Verbindung (config);

connection.on('connect', verbunden);
connection.on('infoMessage', infoError);
connection.on('errorMessage', infoError);
Verbindung.on('Ende', Ende);
connection.on('debug', debug);

Funktion verbunden(err)
{
executeStatement();
}

Funktion executeStatement()
{
var request = new Request("Select * from Property.PropertyGroups", function(err, row_count)
{
wenn (fehler)
{
}
anders
{
console.log(row_count);
}

    connection.close();
});

request.on('row', function(columns)
{
    columns.forEach((function(column)
    {
        console.log(column.value);
    }))
})

}

Funktion infoError(info)
{
var dd = info;
console.log('infoError=> ' + info);
}

Funktionsdebug (Nachricht)
{
var dd = Nachricht;
console.log('debug=> ' + Nachricht);
}

Funktion Ende()
{
var dd = '';
}

Ich führe 'netstat -na' aus, finde aber keinen UDP 1444-Port

Ich sehe in Ihrem Code keinen Aufruf von connection.exec...(request) . Die Anfrage wird also nicht ausgeführt. Das stimmt mit den debug=> State change: ... Nachrichten überein. Sie stoppen, sobald die Authentifizierung abgeschlossen ist.

Ugh, OK, das hat den Trick gemacht. Vielen Dank :D

Ich nehme an, dass @adviner und @flybluewolf dieselbe Person sind und dass dieses Problem nur ein Problem
Wenn ich mich irre, öffne bitte wieder.

Nein, es sind zwei verschiedene Leute. Ich habe den Beitrag gestartet und jetzt funktioniert es.

Hallo, Entschuldigung für die Wiederbelebung, aber ich habe ein Problem mit dem letzten von @adviner geposteten Code-Snippet (

debug=> verbunden mit SERVERt:1433
debug=> Zustandsänderung: Connecting -> SentPrelogin
debug=> Statusänderung: SentPrelogin -> SentLogin7WithStandardLogin
debug=> Verbindung zum SERVER:1433 geschlossen
debug=> Statusänderung: SentLogin7WithStandardLogin -> Final
debug=> Verbindung zum SERVER:1433 geschlossen
debug=> Zustandsänderung: Final -> Final

(Server-URL verdeckt).

Die Datenbank wird in Azure ausgeführt und ich kann über den Knoten mit dem Computer per Telnet darauf zugreifen.

Jede Hilfe wäre dankbar.

Soweit ich weiß, benötigen Azure-Datenbanken eine verschlüsselte Verbindung.
Vermutlich verbinden Sie sich also mit encrypt: true in den Verbindungsoptionen? Ich frage, weil https://github.com/pekim/tedious/issues/65#issuecomment -11765693 dies auskommentiert hat.

Der von Ihnen verwendete Code prüft nicht auf Fehler im Connection-Callback, der Funktion connected . Sie sollten dies beheben, da dort möglicherweise ein Fehler gemeldet wird.

Verschlüsselte mühsame Verbindungen mit Knoten v0.10 (und v0.9) wurden unterbrochen. Siehe #86 für ein bisschen mehr Informationen und ein Commit, von dem ich glaube, dass es das Problem behebt.

Der gleiche Commit, der das Problem v0.10 behebt, setzt auch die Verschlüsselungschiffre standardmäßig auf RC4-MD5, da ich es noch nicht geschafft habe, verschlüsselte Verbindungen mit DES-CBC3-SHA zum Laufen zu bringen. Dies gilt auch für Knoten v0.8.

Können Sie bitte versuchen, den neuesten Code in Master zu verwenden, um den Fix zu finden?

Wenn das immer noch fehlschlägt, können Sie bitte die gesamte Debug-Ausgabe in ein Gist oder Pastebin einfügen? Sie sollten viele Details erhalten, einschließlich Hex-Dumps der TDS-Pakete. Sie werden wahrscheinlich einige Details aus dem Login7-Paket schwärzen wollen.

Danke für die schnelle Antwort. Ich habe den vorherigen Fehler hinter mir, aber jetzt bekomme ich die folgende Ausgabe:

debug=> verbunden mit XXX.database.windows.net:1433
debug=> Zustandsänderung: Connecting -> SentPrelogin
debug=> Statusänderung: SentPrelogin -> SentTLSSSLNegotiation
debug=> TLS ausgehandelt (RC4-MD5, TLSv1/SSLv3)
debug=> Zustandsänderung: SentTLSSSLNegotiation -> SentLogin7WithStandardLogin
infoError=> [Objekt Objekt]
{"number":40531,"state"::1,"class":11,"message":"Servername kann nicht ermittelt werden. Er muss als erstes Segment des DNS-Namens des Servers erscheinen (servername.database.windows.net ). Einige Bibliotheken senden den Servernamen nicht. In diesem Fall muss der Servername als Teil des Benutzernamens (Benutzername@Servername) enthalten sein. Außerdem müssen die Servernamen übereinstimmen, wenn beide Formate verwendet werden."," serverName":"","procName":"","lineNumber"::1,"name":"ERROR","event":"errorMessage"}
Anmeldung fehlgeschlagen; ein oder mehrere errorMessage-Ereignisse sollten ausgegeben worden sein
debug=> Statusänderung: SentLogin7WithStandardLogin -> Final
debug=> Verbindung zu XXXX.database.windows.net:1433 geschlossen
debug=> Zustandsänderung: Final -> Final

Der Servername ist als XXX gekennzeichnet (ich nehme an) und ist Teil der Verbindungszeichenfolge für die Azure-DB.

Das letzte Problem war ein Problem mit unserer Verbindungszeichenfolge Alles funktioniert jetzt. Dankeschön!

Fantastisch.
War das mit dem neusten Code von Master oder einer freigegebenen Version von mühsam?

Die neueste Version vom Master geklont

Liebe Experten,
Ich bin mit dem gleichen Fehler konfrontiert, aber das Problem ist, dass mein Fehler auftritt, nachdem eine Verbindung hergestellt wurde und große Dateien in die Datenbank eingefügt werden. Ich habe kein Problem mit kleinen Dateien:

Daten zur Datenbank hinzufügen
Spalten aus db abrufen
Tabellenspalten erfolgreich erhalten
Hinzufügen von Zeilen zu DB
Zeilen erfolgreich eingefügt
Daten zur Datenbank hinzufügen
Spalten aus db abrufen
Tabellenspalten erfolgreich erhalten
Hinzufügen von Zeilen zu DB
Zeilen erfolgreich eingefügt
Daten zur Datenbank hinzufügen
Spalten aus db abrufen
Tabellenspalten erfolgreich erhalten
Hinzufügen von Zeilen zu DB
Zeilen erfolgreich eingefügt
Daten zur Datenbank hinzufügen
Spalten aus db abrufen
Tabellenspalten erfolgreich erhalten
Hinzufügen von Zeilen zu DB
{ [ConnectionError: Failed to connect to localhost:1433 - connect EADDRINUSE 127 .0.0.1:1433] name: 'ConnectionError', Meldung: 'Failed to connect to localhost:1433 - connect EADDRINUSE 127.0.0.1:1 433', code : 'ESOCKET' }

Ihre Unterstützung wird geschätzt.

@Beniy Haben Sie Beispielcode, mit dem wir dies reproduzieren können?

Lieber Arthurschreiber,
Tatsächlich kann das Problem nicht mit Code zusammenhängen, da manchmal Textdateien analysiert und in DB eingefügt werden, aber manchmal wird dieser Fehler angezeigt, sogar mit derselben Datei und derselben Bedingung, aber zu einer anderen Zeit.
Ich möchte andere Abhängigkeiten zu dieser Aufgabe wissen?

Vielen Dank

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen