1.
ODBC
1.1 Problemstellung
Die Informationen über die Microsoft SQL Server Datenbanken sind zur Zeit nicht auf der TIMD
Website verfügbar. Der Grund ist, dass kein Interface zur Abfrage der benötigten Informatione auf
UNIX- Seite zur Verfügung stand.
Dieses Dokument zeigt eine technisch machbar Lösung für dieses Problem auf.
1.2 Architektur
Hier folgt eine kurze Aufstellung über die verwendete Architekur. Die Angaben sind ohne Gewähr für
Vollständigkeit oder vollständige Richtigkeit.
UNIX Server
(e.g. Applikation
dbtprod1) (e.g. isql)
Windows
Data Name Source (DSN) Driver Manager Server
[Link] (e.g. unix ODBC)
Driver ODBC – Driver
Microsoft
[Link] (freeTDS)
SQL Server
DB (Cluster)
ODBC Protokoll
Microsoft SQL Server
Listener (default Port 1433)
TDS Protokoll
TCP/ IP Protokoll
TCP/ IP Protokoll
1.3 Komponenten
Folgende Komponenten müssen installiert werden:
• ODBC Driver Manager
• ODBC Treiber für Microsoft SQL Server
1.3.1 ODBC Driver Manager
Als ODBC Driver Manager wurde der freie unixODBC Driver Manager gewählt. Als Alternative kann
auch das ebenfalls freie iODBC verwendet werden. Erster wurde gewählt da er mehr verbreitet ist
und somit mehr Support erhält.
1.3.2 ODBC Driver für Microsoft SQL Server
Als ODBC Driver wurde der freie Sybase/Microsoft SQL Server ODBC Driver von freeTDS gewält.
Namhafte freie Alternativen sind keine bekannt.
1.4 Installation
Bei der Installation sollte der Driver Manager VOR dem ODBC- Treiber installiert werden, da sonst
Probleme beim Compilieren (Abhängigkeiten) auftreten können.
1.4.1 Installation Driver Manager
Download : Der aktuellste Release des unixODBC Driver Managers kann von [1] heruntergeladen
werden. Verwendet wurde der letzte „stable“ Release unixODBC- [Link].
Nach dem Download und dem entpacken wird der Driver Manager mit dem Installations- Dreisatz
configure, make, make install installiert. Vorraussetzung ist jedoch eine vorhandene
Entwicklungsumgebung (gmake, gcc, linker, etc.).
Für das GUI müssen gegebenenfalls noch die Qt- Libraries von Trolltech installiert werden. Es geht
aber auch ohne.
oracle@dbtprod2:~/tmp/> gzip –d [Link]
oracle@dbtprod2:~/tmp/> tar –xf [Link]
oracle@dbtprod2:~/tmp/> cd unixODBC-2.2.10
oracle@dbtprod2:~/tmp/>./configure --prefix=/u00/app/oracle/local/unixODBC-2.2.10 \
--sysconfdir=/u00/app/oracle/local/dba/etc
oracle@dbtprod2:~/tmp/> make
oracle@dbtprod2:~/tmp/> make install
Wenn zeitgleich nur mit einer ODBC Driver Manager Version gearbeitet werden soll, empfielt sich ein
allgemeiner Link auf das releasespezifische Verzeichnis zu erstellen. Dies Vereinfacht das Arbeiten
und den Administrationsaufwand.
oracle@dbtprod2:~/tmp/> ln –s /u00/app/oracle/local/unixODBC-2.2.10 /u00/app/oracle/local/unixODBC
Anschliessend sollte der PATH und der LD_LIBRARY_PATH durch die entsprechenden Verzeichnisse
im [Link] ergänzt werden, sofern die nicht schon automatisch geschieht (PATH!).
LD_LIBRARY_PATH + /u00/app/oracle/local/unixODBC/lib
PATH + /u00/app/oracle/local/unixODBC/bin
Die Installation kann wie folgt getestet werden:
oracle@dbtprod2:~/> odbcinst -j
unixODBC 2.2.10
DRIVERS............: /u00/app/oracle/local/dba/etc/[Link]
SYSTEM DATA SOURCES: /u00/app/oracle/local/dba/etc/[Link]
USER DATA SOURCES..: /u00/app/oracle/.[Link]
1.4.2 Installation ODBC Driver
Achtung : ODBC Driver NACH Driver Manger installieren vereinfacht die Sache ungemein. TDS
Protokoll Version 8.0 gab Probleme mit Microsoft SQL Server2005. Daher wurde Version
7.0 verwendet.
Download : Der aktuellste Release des freeTDS ODBC Drivers kann von [3] heruntergeladen werden.
Verwendet wurde der letzte „stable“ Release freetds- 0.62.4 .[Link].
Nach dem Download und dem entpacken wird der ODBC Driver mit dem Installations- Dreisatz
configure, make, make install installiert. Vorraussetzung ist jedoch eine vorhandene
Entwicklungsumgebung (gmake, gcc, linker, etc.).
oracle@dbtprod2:~/tmp/> gzip –d [Link]
oracle@dbtprod2:~/tmp/> tar –xf [Link]
oracle@dbtprod2:~/tmp/> cd freetds-0.62.4
oracle@dbtprod2:~/tmp/>./configure --prefix=/u00/app/oracle/local/freetds-0.62.4 \
--sysconfdir=/u00/app/oracle/local/dba/etc \
--with-unixodbc=/u00/app/oracle/local/unixODBC \
--with-tdsver=7.0 --enable-msdblib
oracle@dbtprod2:~/tmp/> make
oracle@dbtprod2:~/tmp/> make install
Wenn zeitgleich nur mit einer ODBC Driver Version gearbeitet werden soll, empfielt sich ein
allgemeiner Link auf das releasespezifische Verzeichnis zu erstellen. Dies Vereinfacht das Arbeiten
und den Administrationsaufwand.
oracle@dbtprod2:~/tmp/> ln –s /u00/app/oracle/local/ freetds-0.62.4 /u00/app/oracle/local/freetds
Anschliessend sollte der PATH und der LD_LIBRARY_PATH durch die entsprechenden Verzeichnisse
im [Link] ergänzt werden, sofern die nicht schon automatisch geschieht (PATH!).
LD_LIBRARY_PATH + /u00/app/oracle/local/freetds/lib
PATH + /u00/app/oracle/local/freetds/bin
MANPATH + /u00/app/oracle/local/freetds/man
Die Installation kann wie folgt getestet werden:
oracle@dbtprod2:~/> tsql –H <server> -p <port> -U <user> -P <password>
tsql> use master
tsql> go
tsql> help
tsql> quit
1.5 Konfiguration
TDS kann mit den folgenden Dateien konfiguriert werden. Ist aber in der Regel nicht notwendig.
- rw- r- - r- - 1 oracle dba 219 Mar 3 08:59 [Link]
- rw- r- - r- - 1 oracle dba 203 Mar 3 09:00 [Link]
- rw- r- - r- - 1 oracle dba 4184 Mar 3 15:47 [Link]
ODBC wird mit den beiden folgenden Dateien konfiguriert:
- rw- rw- r- - 1 oracle dba 0 Mar 2 17:30 [Link]
- rw- rw- r- - 1 oracle dba 0 Mar 2 17:30 [Link]
1.5.1 [Link]
In der Datei [Link] werden die ODBC Driver aufgeführ und konfiguriert. Dieses File kann mit
einem beliebigen Editor konfiguriert werden. Übersichtlichkeitshalber sollte pro ODBC Driver
(- Variante) nur ein Eintrag gemacht werden. Ein möglicher Eintrag kann lauten:
[FreeTDS]
Description = FreeTDS v0.62.4 with protocol v7.0
Driver = /u00/app/oracle/local/freetds/lib/[Link]
; Debug = 0
; CommLog = 1
; Trace = Yes
; TraceFile = /tmp/[Link]
Die letzten 4 Parameter sind nicht verifiziert.
Ein Treiber kann auch mittels des Programms odbcinst installiert werden:
odbcinst –i –d –f driver_template.conf
1.5.2 [Link]
In der Datei [Link] werden die jeweiligen Data Source Names (DSN) erfasst. Die enspricht in etwa
einem Oracle Service Name im [Link] resp. Oracle Names Server.
Ein möglicher Eintrag kann lauten:
[TestDB]
Driver = FreeTDS
Description = ODBC und FreeTDS Test
Server = SVZDSD01
Database = master
Port = 1433
; Uid =
; Password =
; Trace = No
; Tracefile =
; Network = DBMSSOCN
; Wsid = PC-92464
; App = Microsoft Open Database Connectivity
Die Datei [Link] hat jeweils noch einen Header - und einen Footer Record:
[ODBC Data Sources]
FreeTDS = FreeTDS ODBC Driver
[Default]
Driver = FreeTDS
Port = 1433
Ein DSN kann auch mittels des Programms odbcinst installiert werden:
odbcinst –i –s –f dsn_template.conf
1.5.3 Tests
Die installierten und erkannten Driver sowie DSN können auch wie folgt abgefragt werden:
oracle@dbtprod2:~/> odbcinst -q -d
[FreeTDS]
oracle@dbtprod2:~/> odbcinst -q -s
[SQL2005]
[SQL2000]
1.6 Troubleshooting
Gemäss dem Architektur - Stack in Kapitel 1.2 ist hier eine kurze Checkliste für das Troubleshooting
aufgeführt:
• Server bekannt?
$ nslookup <server>
• Server erreichbar?
$ ping –c1 <server>
Kann fehlschlagen, wenn Firewall zwischengeschaltet ist.
• Microsoft SQL Server Listener erreichbar?
$ telnet <server> <port (1433)>
• TDS Software OK?
tsql - C
• TDS Connection auf DB OK?
tsql - H <server> - p <port (1433) - U <user> - P <password>
• ODBC Driver Manager OK?
odbcinst –j
• ODBC Driver vorhanden?
odbcinst –q –d
• ODBC DSN vorhanden?
odbcinst –q –s
• ODBC Connect auf DB OK?
isql –v SQL2005 sa sa
• Query absetzbar?
echo "select * from syssegments;" | isql - v - m20 SQL2000 sa sa
Hilft alles nichts können auf den verschiedenen Architekturlevels noch diverse Traces und Logs
eingeschaltet werden:
export TDSDUMP=/u00/app/oracle/local/dba/log/[Link]
export TDSDUMPCONFIG=/u00/app/oracle/local/dba/log/[Link]
Auf Treiberebene im [Link] und auf DSN- Ebene im [Link].
1.7 Support
Professioneller Support für diese Kombination kann voraussichtlich bei der Firma Redcor AG
bezogen werden: http:/ / [Link]- [Link]/entry/[Link]?memberid=redcor_ag.
1.8 Quellen
[1] UnixODBC Driver Manager: http:/ / [Link]/
[2] iODBC Driver Manager, eine Alternative aber weniger verbreitet als unixODBC:
http: / / [Link] /
[3] Tabular Data Stream (TDS) und ODBC Treiber für MS SQL- Server 7, 2000, 2005:
http: / / [Link] /
[4] Download der Sourcen für freeTDS: http:/ / i b [Link] / pub /Linux /ALPHA/freetds/stable /
[5] Free ODBC Drivers, SQL Servers and Tools, Database Libraries and Source Code:
http: / / [Link]/sourcecode/[Link]
[6] Connecting to MS SQL Server from Unix: http: / / [Link]/mssql /[Link]
[7] Talking to Microsoft SQL Server from Unix:
http: / / [Link] /lab /sw /[Link]