Question

J'essaie de me connecter à une base de données sur Azure à l'aide de node-mssql.Mon système de développement est Windows 7 et je n'ai pas réussi à installer node-sqlserver via WebMatrix.

Ma question est en deux parties :Premièrement, y a-t-il une raison pour laquelle même lorsque je suis les instructions de Microsoft, j'obtiens des erreurs avec node-sqlserver ?En essayant l'approche naïve en utilisant NPM dans WebMatrix, j'obtiens l'erreur suivante :

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()

VS2012 Professional est installé sur la machine.

La deuxième partie de ma question est la suivante : y a-t-il une raison pour laquelle l'utilisation de node-mssql ne fonctionnera pas sous Azure ?J'obtiens simplement une erreur de connexion échouée, même si j'ai vérifié les détails plusieurs fois (espaces réservés remplacés par les valeurs réelles ci-dessous) :

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

J'obtiens l'erreur suivante :

{"name": "ConnectionError", "message": "connexion à TCP : {server}.database.windows.net:1433 > - échec de la connexion :getaddrinfo ENOTFOUND"}

Je me rends compte que node-sqlserver est le meilleur moyen de le faire sous Azure mais j'ai essayé pendant quelques jours sans succès.Y a-t-il quelque chose d'évident qui me manque ?

Était-ce utile?

La solution

1) Vous pouvez le résoudre en téléchargeant un fichier précompilé node-sqlserver chauffeur de ce dépôt.Je n'ai pas pu compiler les sources sur ma machine même avec toutes les dépendances de développement installées.

2) node-mssql Le module utilise trois pilotes différents pour communiquer avec le serveur SQL.Votre configuration ne spécifie aucun pilote, donc celui par défaut est utilisé - Tedious.Vous devez modifier votre config pour qu'elle fonctionne correctement :

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

Il existe également une option à utiliser node-mssql avec node-sqlserver mais pour que ça marche, il faut installer compilé node-sqlserver pilote manuellement.La configuration devrait ressembler à ceci :

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

Autres conseils

J'utilisais SQL Azure depuis Node.js l'année dernière lorsque le module a été nommé node-sqlserver donc ma réponse pourrait ne pas fonctionner.

Référez à votre premier problème, node-mssql devrait devoir être compilé via node-gyp et C++ lors de l’installation de NPM.Vous feriez donc mieux de vérifier si le compilateur C++ est installé.Lors de l'installation, il m'a dit que j'avais besoin de VS2010 C++.Je ne sais pas si vous en avez besoin maintenant ou d'une version ultérieure.Tu peux courir npm install node-mssql à partir de la fenêtre de commande et vous devriez obtenir un fichier journal en cas d'échec, cela devrait être npm-error.log ou quelque chose de similaire.

Référez à votre deuxième problème, lorsque j'utilisais ce module, j'utilise une chaîne de connexion.Pourriez-vous vérifier que votre nom d'utilisateur a été spécifié au format user@server.Vérifiez également si votre pare-feu SQL Azure a été ouvert pour d'autres services cloud.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top