Usando node-sqlserver ou node-mssql no Azure
-
22-12-2019 - |
Pergunta
Estou tentando me conectar a um banco de dados no Azure usando node-mssql.Meu sistema de desenvolvimento é o Windows 7 e não tive nenhum sucesso ao instalar o node-sqlserver via WebMatrix.
Minha pergunta tem duas partes:Em primeiro lugar, há algum motivo para que, mesmo quando sigo as instruções da Microsoft, recebo erros com o node-sqlserver?Tentando a abordagem ingênua usando NPM dentro do WebMatrix, recebo o seguinte erro:
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()
A máquina possui o VS2012 Professional instalado.
A segunda parte da minha pergunta é: há algum motivo pelo qual o uso do node-mssql não funcionará no Azure?Simplesmente recebo um erro de conexão com falha, embora tenha verificado os detalhes várias vezes (substituí os valores reais abaixo):
var config = {
user: '{username}',
password: '{password}',
server: 'tcp:{server}.database.windows.net',
database: '{database}'
}
Estou tendo o erro a seguir:
{"name":"ConnectionError","message":"conexão com tcp:{server}.database.windows.net:1433 >- erro de falha:getaddrinfo ENOTFOUND"}
Sei que node-sqlserver é a melhor maneira de fazer isso no Azure, mas tentei por alguns dias sem sucesso.Há algo óbvio que estou perdendo?
Solução
1) Você pode resolver baixando o pré-compilado node-sqlserver
motorista de este repositório.Não consegui compilar fontes em minha máquina, mesmo com todas as dependências de desenvolvimento instaladas também.
2) node-mssql
módulo usa três drivers diferentes para se comunicar com o sql server.Sua configuração não especifica nenhum driver, então o padrão é usado - Tedious
.Você deve alterar sua configuração para que funcione corretamente:
var config = {
user: '{username}',
password: '{password}',
server: '{server}.database.windows.net', // simply remove "tcp:"
database: '{database}'
}
Também existe a opção de usar node-mssql
com node-sqlserver
mas para que funcione, você precisa instalar o compilado node-sqlserver
motorista manualmente.A configuração deve ficar assim:
var config = {
driver: 'msnodesql',
user: '{username}',
password: '{password}',
server: 'tcp:{server}.database.windows.net',
database: '{database}'
}
Outras dicas
Eu estava usando o SQL Azure do Node.js no ano passado quando o módulo foi nomeado node-sqlserver
então minha resposta pode não funcionar.
Refira o seu primeiro problema, node-mssql deve precisar ser compilado através node-gyp
e C++
durante a instalação do NPM.Portanto, é melhor verificar se você possui o compilador C++ instalado.Quando eu estava instalando, ele me disse que precisava do VS2010 C++.Não tenho certeza se você precisa dele agora ou de qualquer versão posterior.Você pode correr npm install node-mssql
na janela de comando e você deverá obter um arquivo de log se falhar, deve ser npm-error.log
ou algo semelhante.
Refira o seu segundo problema, quando eu estava usando este módulo eu uso string de conexão.Você poderia verificar se seu nome de usuário foi especificado no formato user@server
.Verifique também se o firewall do SQL Azure foi aberto para outros serviços em nuvem.