Node-odbc не может подключиться к mssql

Я провел последние день или два, настраивая unixODBC и freetds на Ubuntu 12 — сам по себе процесс не из приятных, но теперь он работает с использованием как sqsh, так и isql. Я установил node-odbc и использую фрагмент кода, представленный в файле readme github, чтобы проверьте соединение, но я всегда получаю

 S1000:1:0:[unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 WARNING: ev_unref is deprecated, use uv_unref
 [Error: Error opening database]

Используя isql, я запускаю isql -v SERVER user pass (используя правильные кредиты ..), а затем use DATABASE после подключения, и все это работает, и я могу нормально выполнять запросы. Моя строка подключения в js

 "DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

Что точно соответствует учетным данным, используемым для подключения к isql, но в узле я получаю вышеупомянутую ошибку. Любые идеи о том, почему это происходит? Возможно ли, что это сделать расположение моих файлов odbc.ini и odbcinst.ini или что-то в этом роде?

Просто для справки:

/etc/odbc.ini:

[SERVER]
Driver      = FreeTDS
Trace       = No
Server      = SERVER
Port        = 1433
Database    = DATABASE
UsageCount  = 1
TDS_Version = 7.0

/etc/odbcinst.ini:

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage   = 1
CPTimeout   = 5
CPReuse     = 20
Threading   = 1

Заранее благодарю за любую помощь!


person chvck    schedule 10.07.2012    source источник


Ответы (2)


Столкнулся с этой проблемой сегодня, в итоге мне нужно было указать номер порта как часть строки подключения. к вашему сведению.

person anony    schedule 02.11.2012

Похоже, я только что нашел решение этой проблемы, хотя я не совсем понимаю, почему. Если используется строка подключения:

"DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

Затем по какой-то причине это вообще не работает, я попытался использовать настройку SERVER как IP-адрес, так и фактическое имя машины ... не повезло. Однако, если я изменю строку подключения, чтобы использовать SERVERNAME или DSN (в строке может быть только одно из SERVER, SERVERNAME или DNS) и я укажу имя машины, тогда она будет работать нормально, я не могу заставить ее работать с IP, независимо от того что я пытаюсь, хотя. Итак, в итоге строка подключения, которая работает для меня:

"DRIVER={FreeTDS};SERVERNAME=SERVERNAME;UID=user;PWD=pass;DATABASE=DATABASE"

Ключ к этой проблеме, похоже, лежит в SQLDriverConnect.

person chvck    schedule 10.07.2012
comment
У нас та же проблема. Наше решение тоже самое. Настройте FreeTDS и используйте SERVERNAME вместо SERVER... теперь это требует от нас распространять и поддерживать файлы конфигурации, а не просто иметь строку подключения :( - person Derek Litz; 06.08.2012