ODBC
Description
Adding support in SME Server for a universal connection to foreign datebase servers using Open Database Connectivity (ODBC).
Used packages
unixODBC.i386 - unixODBC official site
unixODBC-devel.i386
php-odbc.i386 - a module for PHP applications that use ODBC databases.
freetds - a re-implementation of the Tabular Data Stream protocol made by Sybase and Microsoft. FreeTDS official site
Optional: gcc
Installation
Install basic packages via server-manager:
unixODBC.i386
unixODBC-devel.i386
php-odbc.i386
Alt 1: Install precompiled FreeTDS
Install FreeTDS from Dag repository
yum --enablerepo=dag install freetds freetds-devel
signal-event post-upgrade; signal-event reboot
Alt 2: Install FreeTDS from source
wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
gzip -d freetds-0.82.tar.gz
tar -xvf freetds-0.82.tar
yum install gcc
cd freetds-0.82
./configure --sysconfdir=/etc --enable-msdblib --with-tdsver=8.0
make
make install
make clean
signal-event post-upgrade; signal-event reboot
Test with tsql
Check settings:
tsql -C
Should output someting similar to this:
Compile-time settings (established with the "configure" script) Version: freetds v0.82 freetds.conf directory: /usr/local/etc MS db-lib source compatibility: no Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 8.0 iODBC: no unixodbc: yes
Test connection to a foreign database, overriding settings in freetds.conf:
tsql -S 192.168.0.112 -U testuser -P testpass
Configuration
freetds.conf
mkdir -p /etc/e-smith/templates-custom/etc/freetds.conf pico /etc/e-smith/templates-custom/etc/freetds.conf/10xp3c
Add your foreign database server (modify to suit your conditions):
- SQL Server on Win XP machine
[xp3c] host = 192.168.0.112 port = 1433 tds version = 8.0 instance = db_kalle
expand-template /etc/freetds.conf
odbcinst.ini
mkdir -p /etc/e-smith/templates-custom/etc/odbcinst.ini pico /etc/e-smith/templates-custom/etc/odbcinst.ini/20sqlserver
Add driver path (modify to suit your conditions):
[FreeTDS]
Description = Ms SQL Server access with FreeTDS driver Driver = /usr/lib/libtdsodbc.so
expand-template /etc/odbcinst.ini
odbc.ini
mkdir -p /etc/e-smith/templates-custom/etc/odbc.ini pico /etc/e-smith/templates-custom/etc/odbc.ini/20sqlserver
Add text (modify to suit your conditions):
[sqlserver]
Driver = FreeTDS Description = Connection to DB_KALLE on server xp3c Trace = No Server = 192.168.0.112 Database = db_kalle Port = 1433 TDS_Version = 8.0
expand-template /etc/odbc.ini
Check PHP configuration
phpinfo(), section Configure Command, outputs: --with-unixODBC=shared,/usr There should also be a section "odbc".
PHP function odbc_connect should now work.
Additional information
Current forum discussion at http://forums.contribs.org/index.php?topic=44185.0