본문 바로가기

'.' Programs/PHP

php에서 원격mssql 접속

이번 프로젝트를 하면서 기존 MSSQL의 데이터들을 mysql로 옴겨와야하는 상황이 생겼다ㅋ
그래서 이것 저것해보다 알게된것 몇자 적어보려.. ㅋㅋ

일단 php에서 원격의 mssql데이터를 받아오려면 freetds란것을 설치하여야 한다.
odbc 를 이용한 방법도 있고 다른거( 잘 모르는거라..;; )도 있지만


FREETDS를 쓰면 좋은점

1. 속도가 빠르다.

2. 윈도우쪽은 전혀 건들지 않아도 된다. (리퀘스트브로커 같은거 안깔아두 된다)

3. php 에서 top 이라든가 distinct 등의 구문이 먹지 않는데 freetds 는 아무 문제가 없다.

4. 예전엔 한글 지원이 되지 않았던 문제점이 있었으나, 그 문제 또한 해결되었다.


이런 이유로 FREETDS를 많이 쓴다고 합니다ㅋ

일단 설치법부터..

1. www.freetds.org 에서 최신 버전을 다운받는다.

freetds-0.63.tar

2. /usr/local/ 하단에 압축을 풀고 설치한다.

(전 /usr/local/freetds-0.63 의 디렉토리명을 /usr/local/freetds 로 변경했는데, 보기 쉽게 할려는 것이지 설치에 반드시 필요한 사항은 아닙니다.)

[code]# cd freetds

#./configure --with-tdsver=7.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static

# make

# make install [/code]

3./usr/local/freetds/freetds.conf 에 연결할 ms-sql 에 대한 환경 설정을 확인한다.

[MyServer2k]

host = ntmachine.domain.com

port = 1433

tds version = 4.2

위 내용을 확인 후 host 정보를 변경합니다.

저같은 경우는 cms서버에 접속해야하기 떄문에

host = ***.***.***.**로 변경했습니다.

tds version = 4.2 로 되어 있는것을 꼭 확인하세요.


위 설치과정이 끝나면 php를 재컴파일해서 설치하여야 합니다ㅋ

아파치 설치할때 동적모듈로 설치했으면 php만 다시 컴파일하면 되지만 그렇지 않을떄는 흠.. 알아서ㅎㅎ

암튼 php를 재 컴파일 할때 옵션에

[code]
--with-sybase=/usr/local/freetds \
--with-mssql=/usr/local/freetds \
[/code]

위 옵션을 주면 php에서 mssql_connect 등을 슬수 있습니다.
(--with-sybase=/usr/local/freetds \ <-- 이건 필요없을수도...)

그리고 아파치 재시작후

[code]
$Conn = mssql_connect ( "MyServer2k", "username", "password");
mssql_select_db('db_name', $conn);
[/code]

위와 같이 연결하시면 됩니다.

주의 할것은 호스트이름을 freetds.conf 에서 지정한 이름으로 해야합니다.
위의 예에서는 "MyServer2k"가 되겠죠 ㅋ

그리고 한가지 더..
원격mssql에서 데이터를 받아오다 보면 특정필드의 크기가 커서 중간에 잘리는경우가 있습니다. 하루동안 삽질을 한 결과 ㅋ

이럴경우에는 php.ini파일을 열어서

[code]
; Valid range 0 - 2147483647. Default = 4096.
mssql.textlimit = 4096 //-> 이부분을 mssql.textlimit = 지정크기

; Valid range 0 - 2147483647. Default = 4096.
mssql.textsize = 4096 //-> 이부분을 mssql.textsize = 지정크기
[/code]
위와 같이 바꾸시면 해결됩니다.

 

출처 : http://kkanghuni.tistory.com/39

''.' Programs > PHP' 카테고리의 다른 글

[PHP] 쿠키 설정.  (0) 2012.07.03
[PHP] 배열 stdclass <-> array 변환  (1) 2012.07.02
[PHP] 배열 함수 정리.  (0) 2012.05.10
[PHP] 배열함수 array_unique() - 중복된 배열값 제거.  (0) 2012.05.02
[PHP] 클립보드  (0) 2012.04.09