Utilisation de node-sqlserver ou node-mssql sous Azure
-
22-12-2019 - |
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 ?
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.