Avete bisogno di tool e librerie che vi permettano di collegarvi dalla vostra macchina Linux ad un server Microsoft SQL Server ? La risposta potrebbe essere l’installazione di UnixODBC e FreeDTS .
Vediamo passo passo come si può procedere se si decide di compilare da sé le varie librerie.
Per prima cosa scaricate da qui l’ultima versione del pacchetto di sorgenti contenenti sia UnixODBC che FreeDTS.
Terminato il download andate a decomprimere il file in una directory di vostra scelta e accedete, come utente root, a questa nuova directory che avete creato.
Dovreste trovarvi davanti:
– directory freedts
– directory unixodbc
– file build_for_others.sh
– file build_for_slackware.sh
Se state usando una distribuzione Slackware (ho preparato il tutto su una Slackware64-current) non dovete far altro che eseguire il file build_for_slackware.sh , esso si preoccuperà di compilare i software, generare i pacchetti per l’installazione ed infine installarli.
Se non state usando una distribuzione Slackware dovete eseguire il file build_for_others.sh , esso installerà UnixODBC all’interno della directory /opt/unixodbc e installerà FreeDTS all’interno della directory /opt/freedts.
Quando la compilazione e l’installazione saranno terminate (attenzione ad eventuali librerie esterne richieste durante queste fasi) dovrete passare a configurare le connessioni ai vari server / database.
Le indicazioni base per FreeDTS vanno inserite nel file /etc/freedts.conf (Slackware) o /opt/freedts/etc/freedts.conf (non Slackware); nel file dovrete inserire varie sezioni, una per server, che vanno ad indicare, per righe:
– un identificatore univoco della connessione (tra parentesi quadre)
– il nome del server / indirizzo ip
– la porta di connessione, in generale 1433
– la versione della connessione, 8.0 non dovrebbe andare bene
Ecco un esempio di contenuto per freedts.conf:
1 2 3 4 |
[MYSERVER] host = myserver.mydomain.com port = 1433 tds version = 8.0 |
Sistemato FreeDTS passiamo a UnixODBC, qui dovremo sistemare i file /etc/odbcinst.ini (o /opt/unixodbc/etc/odbcinst.ini se non usate Slackware) e /etc/odbc.ini (o /opt/unixodbc/etc/odbc.ini se non usate Slackware).
In odbcinst.ini vanno inseriti i riferimenti per poter usare FreeDTS nelle connessioni tramite ODBC ai server SQL Server che volete. Il file richiede, come visto anche in precedenza, l’indicazione dei dati in blocchi di testo indicanti:
– un identificatore univoco del driver (tra parentesi quadre)
– una descrizione testuale
– il riferimento al file .so del driver
– eventuali indicazioni su tracciamento e generazione log.
Ecco un esempio di contenuto per odbcinst.conf nel caso di Slacware64
1 2 3 4 5 6 7 |
[FreeTDS] Description=Microsoft SQL Server FreeTDS Driver Driver=/usr/lib64/libtdsodbc.so Trace = Yes TraceFile = /tmp/freetds.log FileUsage = 1 UsageCount =1 |
Ecco un esempio di contenuto per odbcinst.conf nel caso di Slacware (non a 64bit)
1 2 3 4 5 6 7 |
[FreeTDS] Description=Microsoft SQL Server FreeTDS Driver Driver=/usr/lib/libtdsodbc.so Trace = Yes TraceFile = /tmp/freetds.log FileUsage = 1 UsageCount =1 |
Ecco un esempio di contenuto per odbcinst.conf nel caso di altre distribuzioni
1 2 3 4 5 6 7 |
[FreeTDS] Description=Microsoft SQL Server FreeTDS Driver Driver=/opt/freedts/lib/libtdsodbc.so Trace = Yes TraceFile = /tmp/freetds.log FileUsage = 1 UsageCount =1 |
In odbc.ini vanno inseriti i riferimenti che permettono di indicare per un datasource quale driver utilizzare. Il file richiede, come visto anche in precedenza, l’indicazione dei dati in blocchi di testo indicanti:
– un identificatore univoco (tra parentesi quadre)
– il nome del server (che corrisponde all’identificatore in freedts.conf)
– il nome del driver (che corrisponde all’identificatore in odbcinst.ini)
Ecco un esempio di contenuto per odbc.conf .
1 2 3 |
[MYSERVER] ServerName = MYSERVER Driver = FreeTDS |
Una volta terminato tutto potrete procedere alla vostra connessione al database, magari usando il comando isql (o /opt/unixodbc/bin/isql se non usate Slackware) , indicando il nome del datasource, il nome utente e la password:
1 |
isql MYSERVER USERNAME PASSWORD |