Pregunta

Estoy intentando conectarme a una base de datos en Azure usando node-mssql.Mi sistema de desarrollo es Windows 7 y no he tenido ningún éxito al instalar node-sqlserver a través de WebMatrix.

Mi pregunta tiene dos partes:En primer lugar, ¿hay alguna razón por la que incluso cuando sigo las instrucciones de Microsoft obtengo errores con node-sqlserver?Al probar el enfoque ingenuo usando NPM dentro de WebMatrix, aparece el siguiente error:

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

La máquina tiene instalado VS2012 Professional.

La segunda parte de mi pregunta es: ¿hay alguna razón por la que el uso de node-mssql no funcione en Azure?Simplemente recibo un error de conexión fallida, aunque he verificado los detalles varias veces (sustituí los marcadores de posición por los valores reales a continuación):

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

Obtuve el siguiente error:

{"name":"ConnectionError","message":"conexión a tcp:{servidor}.database.windows.net:1433 >- Error fallido:getaddrinfo ENOTFOUND"}

Me doy cuenta de que node-sqlserver es la mejor manera de hacerlo en Azure, pero lo intenté durante un par de días sin éxito.¿Hay algo obvio que me estoy perdiendo?

¿Fue útil?

Solución

1) Puedes solucionarlo descargando precompilado node-sqlserver conductor de este repositorio.No pude compilar fuentes en mi máquina incluso con todas las dependencias de desarrollo instaladas.

2) node-mssql El módulo utiliza tres controladores diferentes para comunicarse con el servidor SQL.Su configuración no especifica ningún controlador, por lo que se utiliza el predeterminado: Tedious.Debes cambiar tu configuración para que funcione correctamente:

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

También existe la opción de utilizar node-mssql con node-sqlserver pero para que funcione, tienes que instalarlo compilado. node-sqlserver controlador manualmente.La configuración debería verse así:

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

Otros consejos

Estaba usando SQL Azure de Node.js el año pasado cuando se nombró el módulo node-sqlserver entonces mi respuesta podría no funcionar.

Consulte su primer problema, node-mssql debería necesitar ser compilado a través de node-gyp y C++ durante la instalación de NPM.Así que será mejor que compruebes si tienes instalado el compilador de C++.Cuando lo estaba instalando me dijo que necesito VS2010 C++.No estoy seguro si lo necesita ahora o cualquier versión posterior.Tu puedes correr npm install node-mssql desde la ventana de comandos y debería obtener un archivo de registro si falla, debería ser npm-error.log o algo similar.

Consulte su segundo problema, cuando estaba usando este módulo utilizo una cadena de conexión.¿Podrías volver a verificar que tu nombre de usuario se haya especificado en el formato? user@server.También verifique si su firewall de SQL Azure se abrió para otros servicios en la nube.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top