Подключение Redhat к SQL Server 2008 для Ruby on Rails - PullRequest
5 голосов
/ 26 сентября 2011

Я пытаюсь подключить Redhat Linux к Microsoft SQL Server 2008. У меня уже были проблемы с его настройкой на Windows (мой тестовый компьютер), но теперь мне нужно развернуть его на компьютере Linux, где он будет работать.

Итак, я установил unixODBC и FreeTDS (с большими усилиями, даже не уверен, правильно ли он был установлен: S), и в результате у меня есть 3 файла в /usr/local/etc:

odbc.ini
odbcinst.ini
freetds.conf

Затем я отредактировал файл freetds.conf, и вот что я добавил:

[sqlServer]
host = servername
port = 4113
instance = sqlServer
tds version = 8.0
client charset = UTF-8

Мне нужно было узнать номер порта от моего администратора базы данных, так как он настроен на динамическийв SQL Server 2008.

Мой odbcinst.ini файл выглядит следующим образом:

[FreeTDS]
Description     = TDS driver (Sybase/MS SQL)
Driver          = /usr/local/lib/libtdsodbc.so
Setup           = /usr/local/lib/libtdsS.so
CPTimeout       =
CPReuse         =
FileUsage       = 1

, а мои odbc.ini файлы выглядят так:

[sqlServer]
Driver = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = 1
Servername      = sqlServer
Database        = RubyApp

Итак, теперьЯ попытался соединиться, чтобы увидеть, есть ли какое-либо соединение, используя

tsql -S sqlServer -U test -P test, однако это выдает мне только следующую ошибку:

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20013 (severity 2):
        Unknown host machine name.
There was a problem connecting to the server

Когда я пытался использовать isql, делал isql -v sqlServer test test, что выплюнуло следующую ошибку:

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
[ISQL]ERROR: Could not SQLConnect

Есть идеи, что я могу делать неправильно?

Ответы [ 2 ]

1 голос
/ 09 января 2013

Если вы не можете подключиться с помощью tsql, значит, существует проблема с подключением к вашему SQL-серверу или в freetds.conf.

Сначала проверьте порт и именованный экземпляр, используя tsql -LH [SQL server IP]

# tsql -LH 127.0.0.1
  ServerName HOME
InstanceName INSTANCE1
 IsClustered No
     Version 10.50.2500.0
         tcp 1434

Если это не работает, существует проблема соединения между вашим сервером и сервером SQL.

Если это сработает, тогда настройте ваш порт на tcp выше в freetds.conf.

[TDS]
host = 127.0.0.1
port = 1434
tds version = 7.0

Экземпляр установлен в вашем odbc.ini

[MSSQLExample]
Description = Example server
Driver = FreeTDS
Trace = No
Server = 127.0.0.1\INSTANCE1
Database = MyDatabase
port = 1434

А если ничего не помогает, попробуйте использовать osql, чтобы получить отзыв о том, какая часть не работает.

# osql -S MSSQLExample -U USERNAME -P PASSWORD

И для хорошей информации о сообщениях об ошибках tsql: http://freetds.schemamania.org/userguide/confirminstall.htm

0 голосов
/ 27 сентября 2011

Вам не понадобится имя хоста или IP-адрес SQL Server в файле freetds.conf -

[sqlServer]
host = 192.168.0.99
:
...