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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top