2011-09-26 12 views
5

Tôi đang cố gắng kết nối Redhat Linux với Microsoft SQL Server 2008. Tôi đã gặp sự cố khi thiết lập trên cửa sổ (máy thử nghiệm của tôi) nhưng bây giờ tôi cần triển khai nó máy Linux, nơi nó sẽ được sản xuất.Kết nối Redhat với SQL Server 2008 cho Ruby on Rails

Vì vậy, tôi đã cài đặt unixODBC và freetds (với rất nhiều nỗ lực, thậm chí không chắc chắn nếu nó đã được cài đặt một cách chính xác: S), và kết quả của điều đó là tôi có 3 file trong /usr/local/etc:

odbc.ini 
odbcinst.ini 
freetds.conf 

sau đó tôi thay đổi nội dung file freetds.conf và đây là những gì tôi nói thêm:

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

tôi phải tìm ra số cổng từ DBA của tôi, vì nó được thiết lập để năng động trong SQL server 2008.

tập tin odbcinst.ini của tôi trông như thế này:

[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 tác phẩm của tôi trông như thế này:

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

Vì vậy, bây giờ tôi cố gắng kết nối để xem nếu có bất kỳ kết nối bằng cách sử dụng

tsql -S sqlServer -U test -P test Tuy nhiên, chỉ cung cấp cho tôi lỗi sau:

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 

Khi tôi cố gắng sử dụng isql, làm isql -v sqlServer test test, mà nhổ ra được lỗi sau:

[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 

ý tưởng Bất kỳ những gì tôi có thể làm sai?

Trả lời

0

Sẽ không bạn cần tên máy SQL Server hoặc địa chỉ IP trong file freetds.conf -

[sqlServer] 
host = 192.168.0.99 
: 
+0

Có, tôi không cần nó, nhưng chỉ dành riêng cho mục đích an ninh, tôi đã viết 'ServerName' như trái ngược với servername thực – omarArroum

1

Nếu bạn không thể kết nối với TSQL, sau đó là một vấn đề liên quan đến máy chủ SQL của bạn hoặc trong freetds.conf.

Đầu tiên xác minh cảng và tên Ví dụ sử dụng tsql -LH [SQL server IP]

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

Nếu điều này không làm việc, có một vấn đề kết nối giữa máy chủ và máy chủ SQL.

Nếu nó hoạt động, sau đó đặt cổng của bạn để khớp với tcp ở trên trong freetds.conf.

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

Instance được thiết lập trong bạn odbc.ini

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

Và nếu vẫn thất bại, hãy thử sử dụng osql để nhận được một số phản hồi về phần nào không hoạt động.

# osql -S MSSQLExample -U USERNAME -P PASSWORD 

Và đối với một số thông tin tốt về các thông báo lỗi TSQL: http://freetds.schemamania.org/userguide/confirminstall.htm

+1

này một: Server = 127,0 .0.1 \ INSTANCE1 Lưu thịt xông khói của tôi! – DerStoffel