Frage

Ich versuche, mit node-mssql eine Verbindung zu einer Datenbank in Azure herzustellen.Mein Entwicklungssystem ist Windows 7 und ich hatte überhaupt keinen Erfolg damit, node-sqlserver über WebMatrix zu installieren.

Meine Frage besteht aus zwei Teilen:Erstens gibt es einen Grund dafür, dass ich Fehler mit node-sqlserver erhalte, selbst wenn ich den Anweisungen von Microsoft folge?Wenn ich den naiven Ansatz mit NPM in WebMatrix versuche, erhalte ich die folgende Fehlermeldung:

An error occurred.

"C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-sqlserver" "--json"


Exit status 1

Failed at the node-sqlserver@0.1.0 install script.
This is most likely a problem with the node-sqlserver package,
not with npm itself.
Tell the author that this fails on your system:
    node-gyp rebuild
You can get their info via:
    npm owner ls node-sqlserver
There is likely additional logging output above.



Failed: npm reported an error.

NodeNpm.NpmException: Failed: npm reported an error.
   at NodeNpm.NpmApi.Install(INpmPackage package)
   at Microsoft.WebMatrix.NpmGallery.CachingPackageManger.InstallPackage(INpmPackage package)
   at Microsoft.WebMatrix.NpmGallery.PackageViewModel.Install()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

Auf dem Computer ist VS2012 Professional installiert.

Der zweite Teil meiner Frage lautet: Gibt es einen Grund, warum die Verwendung von node-mssql unter Azure nicht funktioniert?Ich erhalte einfach die Fehlermeldung „Verbindung fehlgeschlagen“, obwohl ich die Details mehrmals überprüft habe (unten habe ich die tatsächlichen Werte durch Platzhalter ersetzt):

var config = {
  user: '{username}',
  password: '{password}',
  server: 'tcp:{server}.database.windows.net',
  database: '{database}'
}

Ich erhalte die folgende Fehlermeldung:

{"name": "ConnectionError", "message": "Verbindung zu tcp:{server}.database.windows.net:1433 >- fehlgeschlagen Fehler:getaddrinfo ENOTFOUND"}

Mir ist klar, dass Node-SQLServer der beste Weg ist, dies unter Azure zu tun, aber ich habe es ein paar Tage lang ohne Erfolg versucht.Gibt es etwas Offensichtliches, das mir fehlt?

War es hilfreich?

Lösung

1) Sie können das Problem lösen, indem Sie vorkompilierte Dateien herunterladen node-sqlserver Fahrer von dieses Repo.Ich war nicht in der Lage, Quellen auf meinem Computer zu kompilieren, obwohl auch alle Entwicklungsabhängigkeiten installiert waren.

2) node-mssql Das Modul verwendet drei verschiedene Treiber, um mit dem SQL Server zu kommunizieren.Ihre Konfiguration gibt keinen Treiber an, daher wird der Standardtreiber verwendet - Tedious.Sie müssen Ihre Konfiguration ändern, damit es ordnungsgemäß funktioniert:

var config = {
    user: '{username}',
    password: '{password}',
    server: '{server}.database.windows.net', // simply remove "tcp:"
    database: '{database}'
}

Es gibt auch eine Option zur Verwendung node-mssql mit node-sqlserver Aber damit es funktioniert, müssen Sie es kompiliert installieren node-sqlserver Treiber manuell.Die Konfiguration sollte so aussehen:

var config = {
    driver: 'msnodesql',
    user: '{username}',
    password: '{password}',
    server: 'tcp:{server}.database.windows.net',
    database: '{database}'
}

Andere Tipps

Ich habe letztes Jahr SQL Azure von Node.js verwendet, als das Modul benannt wurde node-sqlserver Daher funktioniert meine Antwort möglicherweise nicht.

Beziehen Sie sich auf Ihr erstes Problem: Node-MSSQL sollte durchkompiliert werden müssen node-gyp Und C++ während der NPM-Installation.Überprüfen Sie daher besser, ob der C++-Compiler installiert ist.Bei der Installation wurde mir mitgeteilt, dass ich VS2010 C++ benötige.Ich bin mir nicht sicher, ob Sie es jetzt oder eine spätere Version benötigen.Du kannst rennen npm install node-mssql aus dem Befehlsfenster und Sie sollten eine Protokolldatei erhalten, wenn es fehlschlägt npm-error.log oder etwas ähnliches.

Sehen Sie sich Ihr zweites Problem an: Als ich dieses Modul verwendet habe, habe ich eine Verbindungszeichenfolge verwendet.Könnten Sie noch einmal überprüfen, ob Ihr Benutzername im Format angegeben wurde? user@server.Überprüfen Sie außerdem noch einmal, ob Ihre SQL Azure-Firewall für andere Cloud-Dienste geöffnet wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top