2011-09-26 12 views
5

Redhat Linux'u bir Microsoft SQL Server 2008'e bağlamaya çalışıyorum. Pencerelerde (test makinem) ayarlamayı zaten zor buldum ama şimdi dağıtmam gerekiyor Üretimde olacağı Linux makinesi.Ruby on Rails için SQL Server 2008 için Redhat'a Bağlanma

yüzden unixODBC ve FreeTDS (çaba ile, emin bile doğru yüklenmişse: S) yükledim ve bu sonucu ben /usr/local/etc 3 dosyalara sahip olmasıdır:

odbc.ini 
odbcinst.ini 
freetds.conf 

sonra freetds.conf dosyayı düzenleyen ve bu ekledi budur:

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

Ben SQL Server dinamik olarak ayarlandığı takdirde, benim DBA gelen port numarasını öğrenmek zorunda 2008.

Benim odbcinst.ini dosya şuna benzer: Yani şimdi

tsql -S sqlServer -U test -P test kullanarak herhangi bağlantı olup olmadığını görmek bağlanırken çalıştı

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

:

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

ve benim odbc.ini dosyalar şöyle görünür Ancak, , ancak yalnızca bana aşağıdaki hatayı verir:

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 

aşağıdaki hatayı tükürdü ki isql -v sqlServer test test yapıyor, isql kullanarak çalıştı: Yanlış yapıyor ne olabilir

[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 

Herhangi fikirler?

cevap

0

Eğer freetds.conf dosyasında SQL Server veya IP adresine ihtiyacınız olmayacak - Eğer TSQL ile bağlanamıyorsanız

[sqlServer] 
host = 192.168.0.99 
: 
+0

Evet ben ihtiyaç yok, ama sadece güvenlik amacıyla gerçek sunucuadı'nın – omarArroum

1

, sonra SQL sunucusu ile veya bir bağlantı sorunu vardır freetds.conf.

Öncelikle bu işe yaramazsa tsql -LH [SQL server IP]

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

kullanarak portu ve adlandırılmış örneği doğrulamak, Sunucunuza ve SQL sunucusu arasında bir bağlantı sorunu vardır. o işi yaparsa

ardından freetds.conf yukarıdaki tcp eşleşecek şekilde port ayarlayın.

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

Örneği sizin odbc.ini

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

ayarlanır Ve her şeyden eğer parçası çalışmıyor olduğu bazı geribildirim almak osql kullanmayı deneyin başarısız.http://freetds.schemamania.org/userguide/confirminstall.htm

+1

için bu bir karşıt olarak 'servername' yazdı: Sunucu = 127,0

# osql -S MSSQLExample -U USERNAME -P PASSWORD 

Ve TSQL hata mesajlarıyla ilgili bazı iyi bilgi için

.0.1 \ INSTANCE1 Pastırmamı kurtardım! – DerStoffel