2012-07-19 16 views
6

Mam problem z nawiązaniem połączenia z bazą danych na komputerze w mojej sieci przy użyciu węzła-sqlserver firmy Microsoft w pliku node.js. Korzystam z serwera sql 2008 na serwerze Windows 2008. Zdalnie uruchamiam plik node.js na innej maszynie w tej samej domenie. Myślę, że problem związany jest z łańcuchem połączenia.Problemy z węzłem-sqlserver w pliku node.js

var sql = require('node-sqlserver'); 
var conn_str = 'Driver={SQL Server Native Client 10.0};Server=(win08-srv);Database=DB;Trusted_Connection={Yes}'; 

Ponadto, nie powinna być nazwa użytkownika i hasło, aby dostać się do bazy danych, jednak nie było to w ciągu przykładem połączenia z modułem węzła.

//open the DB connection 
sql.open(conn_str, function (err, conn) { 
    if (err) { 
     console.log("Error opening the connection!"); 
    return; 
    } else { 
     console.log('Connection successful!'); 
     return; 
    } 
}); 

zawsze powoduje drukowanie Error opening the connection! gdy bieg.

+0

Czy twój serwer sql pozwala na zdalne połączenia? Czy rozwiązuje się win08-srv? – Doa

+0

Dzięki za szybką odpowiedź. Jak mogę sprawdzić, czy wygrywa win08-srv? Dodałem go do moich połączeń w ustawieniach ODBC na komputerze z uruchomionym plikiem node.js i połączenie tam się powiodło. –

+0

Sprawdź, czy możesz go pingować. Jeśli to rozwiąże, upewnij się, że serwer SQL jest skonfigurowany do akceptowania połączeń zdalnych. Jeśli to nadal nie działa, sprawdź, czy masz zainstalowany SQL Server Native Access Client i czy jest to właściwa wersja (masz 10.0, 11.0 również istnieje). Jeśli to nie pomoże, sprawdź, czy baza danych (DB) jest poprawna. Po tym nie mam już żadnych pomysłów :) – Doa

Odpowiedz

0

Sposób, w jaki mogłem się połączyć, polegał na zmianie ciągu połączenia. Musiałem to zmienić, aby powiedzieć Trusted_Connection{No}, a następnie podać dane logowania.

4

Miałem ten sam problem. Pierwszą rzeczą, którą trzeba zrobić w celu zdiagnozowania problemu jest zmienić przykładowy kod jak poniżej:

sql.open(conn_str, function (err, conn) { 
    if (err) { 
     console.log("Error opening the connection! Error was: " + err); 
    return; 
} 

Raz zrobiłem powyższe, mam trochę więcej informacji na temat błędu. Mój błąd:

"Error opening the connection! Error: IM002: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified" 

Oznacza to, że podałeś niewłaściwy sterownik w ciągu połączenia. Rozwiązałem problem, zmieniając wersję sterownika z 11.0 na 10.0. Możesz zobaczyć, jakie sterowniki są zainstalowane lokalnie (jeśli jesteś w systemie Windows, co do którego zakładam, że jesteś), przechodząc do:

Panel sterowania> Narzędzia administracyjne> Źródła danych (ODBC)> Sterowniki (karta).

Wyszukaj klienta macierzystego programu SQL Server i zobacz numer wersji. Jeśli nie masz zainstalowanego tego sterownika, musisz go pobrać.

+0

ergh! Nie mogę uwierzyć, że to wszystko, zmiana 11 do 10 poprawiła to również dla mnie. – daniellmb

+0

Proste poprawki są zawsze najlepsze :) –

0

Spróbuj ciąg połączenia, aby umożliwić określenie kombinacji nazwy użytkownika i hasła oczywiście dostosować do swoich ustawień

var conn_str = „Driver = {SQL Server Native Client 10.0}; Server = TEXAS; Database = NodeMassive; Uid = WebDev; Pwd = developer1; ";