Outils personnels

SQL Server : accès à partir de linux : Différence entre versions

De wikiGite

(Installation)
(Installation)
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 8 : Ligne 8 :
  
 
Dans /etc/freetds/freetds.conf ajouter
 
Dans /etc/freetds/freetds.conf ajouter
[SERVSQL]
+
[SERVSQL]
        host = serveursql.domain #(ou adresse IP)
+
  host = serveursql.domain #(ou adresse IP)
        port = 1433
+
  port = 1433
        tds version = 8.0
+
  tds version = 8.0
  
test:
+
Tester :
 
  tsql -S SERVSQL -U sa -P sa
 
  tsql -S SERVSQL -U sa -P sa
 
-U : utilisateur SQL Server<br/>
 
-U : utilisateur SQL Server<br/>
 
-P : mot de passe
 
-P : mot de passe
  
cette commande doit renvoyer :
+
cette commande doit renvoyer (sans erreur) :
 
  locale is "fr_FR.UTF-8"
 
  locale is "fr_FR.UTF-8"
 
  locale charset is "UTF-8"
 
  locale charset is "UTF-8"
Ligne 40 : Ligne 40 :
 
== Installation ==
 
== Installation ==
 
  sudo apt-get install unixodbc
 
  sudo apt-get install unixodbc
fourni odbc et l'outils d'interrogation isql
+
fourni les drivers ODBC et l'outils d'interrogation isql
  
 
Voir la configuration d'ODBC, notamment où il cherche ses fichiers :
 
Voir la configuration d'ODBC, notamment où il cherche ses fichiers :

Version actuelle datée du 11 janvier 2012 à 09:22

FreeTDS

Installation

FreeTDS fourni le protocole TDS (Tabular Data Stream) utilisé par SQLServer et Sybase. Il fourni également des outils en ligne de commande, ainsi qu'un driver ODBC mais ce dernier est limité. On lui préfèrera donc ceux d'UnixODBC.

tdsodbc fourni /usr/lib/odbc/libtdsodbc.so et /usr/share/tdsodbc/odbcinst.ini

sudo apt-get install freetds-bin tdsodbc

Dépendances : freetds-common, libsybdb5.

Dans /etc/freetds/freetds.conf ajouter

[SERVSQL]
  host = serveursql.domain #(ou adresse IP)
  port = 1433
  tds version = 8.0

Tester :

tsql -S SERVSQL -U sa -P sa

-U : utilisateur SQL Server
-P : mot de passe

cette commande doit renvoyer (sans erreur) :

locale is "fr_FR.UTF-8"
locale charset is "UTF-8"
1>

On peut ensuite tester :

1> use db1
2> go
1> select * from sysusers;
2> go

Noter les "GO" pour lancer les commandes. Taper "quit" pour quitter.

Configuration

A la fin de /etc/freedts/freetds.conf, ajouter

[SERVSQL]
  host = servsql.regie.fr
  port = 1433
  tds version = 8.0

qui définit l'accès au serveur SQL Server, le port et la version

ODBC

Installation

sudo apt-get install unixodbc

fourni les drivers ODBC et l'outils d'interrogation isql

Voir la configuration d'ODBC, notamment où il cherche ses fichiers :

#odbcinst -j 

 unixODBC 2.2.14
 DRIVERS............: /etc/odbcinst.ini
 SYSTEM DATA SOURCES: /etc/odbc.ini
 FILE DATA SOURCES..: /etc/ODBCDataSources
 USER DATA SOURCES..: /home/user1/.odbc.ini
 SQLULEN Size.......: 8
 SQLLEN Size........: 8
 SQLSETPOSIROW Size.: 8

On utilisera donc /home/user1/.odbc.ini pour les "User DSN"

Configuration

Copier /usr/share/tdsodbc/odbcinst.ini vers /etc/odbcinst.ini (celui-ci déclare un driver "FreeTDS" qui pointe vers les librairies .so)

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

Créer ~/.odbc.ini (équivalent du "User DSN". Si on veut un "System DSN", créer /etc/odbc.ini (sans le ".") -> voir "odbcinst -j")

[SERVSQL-DB1]
Driver          = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = Yes
TraceFile       = /tmp/odbc.ini.log
Server          = 192.168.84.59
Port            = 1433
Database        = DB1

ATTENTION !!!!! : pas d'espaces devant les paramètres ! Sinon le test répondra "DSN not found".

Tester :

# isql -v SERVSQL-DB1 sa sa
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
 SQL> select size,filename from sysfiles;
 SQL>

Pour passer un script :

cat testmssql.sql | isql -v SERVSQL-DB1 sa sa

OU

isql -v SERVSQL-DB1 sa sa < testmssql.sql

Si tout fonctionne, on peut enlever les traces (Trace = no) dans les fichiers de config, et enlever le "-v" pour isql.