Ich hatte dies vor einer Weile, aber das Aktivieren von TCP / IP schien es zu beheben, aber jetzt kann ich keine Verbindung mehr herstellen und ich kann nicht herausfinden, warum. TCP scheint im Konfigurationsmanager aktiviert zu sein. Bitte mache ich etwas falsch?
Als Feature-Request wäre ein besseres Feedback gut, wenn wir dies falsch machen oder wenn möglich mühsam dieselbe Logik verwenden, um eine Verbindung wie das SQL-Server Management Studio herzustellen.
Dies ist mit SQL-Server Express 2008r2, mü[email protected]
var Connection = require('tedious').Connection;
var config = {
userName: 'myuser',
password: 'password',
server: 'localhost',
options: {
database: 'testdb',
instanceName: 'sqlexpress'
}
}
var connection = new Connection(config);
connection.on('connect', function(err) {
if (err) {
console.log(err);
} else {
console.log('Connected');
}
});
{ ConnectionError: Failed to connect to localhost:undefined in 15000ms
at ConnectionError (C:\work\sqltest\node_modules\tedious\lib\errors.js:12:12)
at Connection.connectTimeout (C:\work\sqltest\node_modules\tedious\lib\connection.js:789:28)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
at Timer.listOnTimeout (timers.js:270:5)
message: 'Failed to connect to localhost:undefined in 15000ms',
code: 'ETIMEOUT' }
^ das funktioniert gut
options.instanceName
Der Instanzname, zu dem eine Verbindung hergestellt werden soll. Der SQL Server-Browserdienst muss auf dem Datenbankserver ausgeführt werden und der UDP-Port 1444 auf dem Datenbankserver muss erreichbar sein.
@spacem da Sie options.instanceName
, können Sie die obigen Bedingungen überprüfen? Wenn diese nicht zufrieden sind, versuchen Sie es stattdessen mit options.port
.
Failed to connect
ist ein allgemeiner Fehler, Sie können fast ähnliche Meldungen auch in anderen Datenbanktreibern bemerken, wenn Instanz oder Port falsch sind. Fehlermeldungen mit weiteren nützlichen Details sind erst nach erfolgreicher Verbindung verfügbar, da der Treiber vorher nicht viele Details hat 😅
Vielen Dank - es war nur der SQL Server Browser-Dienst wurde nicht gestartet. Ich denke, Management Studio muss beim Herstellen einer Verbindung zu localhost etwas zaubern.
Tedious Connect sucht im Grunde nach dem SQL Server-Browser- und SQL Server-Agent-Modus, um mit TCP aktiviert für die Protokolle aktiviert zu sein.
Wenn also einer der Dienste oder Ports deaktiviert ist, wird eine Zeitüberschreitungsausnahme angefordert
Ich habe die Anweisungen zu dieser SO-Antwort befolgt und es hat für mich funktioniert:
TCP/IP
Protokoll für SQLEXPRESS
Hilfreichster Kommentar
Vielen Dank - es war nur der SQL Server Browser-Dienst wurde nicht gestartet. Ich denke, Management Studio muss beim Herstellen einer Verbindung zu localhost etwas zaubern.