본문 바로가기

UNIX_LINUX_C_C++

[FreeTDS] Linux 에서 MSSQL 연동 FreeTDS의 Compile 및 Install

[원문] http://www.jamsun2.com/zbxe/?mid=study&listStyle=gallery& document_srl=83371

unixODBC Site : http://www.unixodbc.com

☞ unixodbc 설치

unixODBC is currently availible in a gzip, tar format. This means that you should;

1. copy the unixODBC*.tar.gz file somewhere you can create files and directories
2. gunzip unixODBC*.tar.gz
3. tar xvf unixODBC*.tar

Doing so will create a unixODBC directory with all source files inside.


./configure --prefix=/usr/local/odbc --sysconfdir=/etc --enable-drivrs=yes --enable-gui=no
make
make install


FreeTDS Site : http://www.freetds.org

☞ freetds 설치
# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/odbc --with-tdsver=8.0 --enable-msdblib
make

# ./configure --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared
--enable-static --prefix=/usr/local/freetds

make install



☞ /etc에 있는 freetds.conf파일 수정



[MSSQL]
host = xxx.xxx.xxx.151
port = 1433
tds version = 8.0

☞ tds.driver.template 드라이버 파일의 설정

[freeTDS]
Description = v0.52 with protocol v8.0
Driver = /usr/local/freetds/lib/libtdsodbc.so


☞ odbcinst -i -d -f tds.driver.template



** /usr/local/odbc/bin 에서 저장 및 실행

☞ tds.datasource.template


[MSSQL]
Driver = freeTDS
Description = DB Expresstion

Trace = No
Servername = MSSQL
Database = DBName

☞ odbcinst -i -s -f tds.datasource.template


** /usr/local/odbc/bin 에서 저장 및 실행



☞ /etc/odbcinst.ini 파일 수정

[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/local/freetds/lib/libtdsodbc.so
UsageCount = 1

☞ /etc/profile에 하기 내용을 추가
SYSBASE=/usr/local/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib

export SYBASE LD_LIBRARY_PATH

☞ freeTDS 의 테스트

- tsql -H MSSQL -p 1433 -U sa

- tsql -S MSSQL -U sa

========= FreeTDS에서 테스트시 내용 ======================
Test tsql of FreeTDS, e.g.:
tsql -S Kana -U 'username' -P 'password'
locale is "C"
locale charset is "646"
1> use Northwind
2> go
1> select * from mies
2> go
aap
mies
1>quit



- unixodbc 에서 테스트
/usr/local/odbc/bin/isql -v MS2K sa MyPassword


======== unixODBC에서 테스트 내용 =============================


Test isql of unixODBC:
isql -v Kana 'username' 'password'
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from mies;
+-----------+
| aap |
+-----------+
| mies |
+-----------+
SQLRowCount returns 1
1 rows fetched
SQL> quit

=======================================================
db_con.php
========================================================

$host="123.123.123.123"; // 접속할 서버 아이피
$user="sa"; // 접속 아이디
$password="!%jell001"; // 접속 패스워드
$dataname="jeil"; // 접속 디비명

putenv("MSSQL=/usr/local/freetds");
putenv("TDSVER=42");
$db_ms=mssql_connect($host,$user,$password);
mssql_select_db($dataname, $db_ms) or die ("DB접속에 실패하였습니다.");


★ 문제점 : freeTDSD에서는 UTF8로 한글이 정상적으로 출력되나, unixODBC에서는 한글이 깨짐

한글이 나타나지 않는 현상 현재 수정방법 없음