2019. 5. 8. 14:15ㆍ펄스크립트
리눅스에서 다른 서버( Windows Server 2016 )에 구성되어 있는 SQL Server (MSSQL)로 연결하기 위해서는 관련 패키지가 필요하다.
[ 구성 환경 ]
- 리눅스 : RHEL 7.3
- SQL Server's OS : Windows Server 2016 / 192.168.100.62
[ 구성 ]
1. ODBC rpm 설치
[root@openfoam ~]# yum install unixODBC.x86_64 unixODBC-devel.x86_64
2. freeTDS rpm 설치
[root@openfoam ~]# rpm -ivh freetds-0.95.81-1.el7.x86_64.rpm
3. DBI / DBD-ODBC Perl Module 설치
- DBI-1.642.tar.gz
- DBD-ODBC-1.60.tar.gz
4. 가지고 있는 ODBC driver 확인.
[root@openfoam ~]# odbcinst -q –d
[PostgreSQL]
[MySQL]
[root@openfoam ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
5. /etc/odbcinst.ini에 내용 추가
[SQL Server]
Description = FreeTDS Driver
Driver = /lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so.2
FileUsage = 1
6. /etc/odbc.ini에 내용 추가.
[DB2016]
driver=SQL Server
server=192.168.100.62 --> SQL Server's IP
port=1433 --> SQL Server 에서 사용하는 Port
database=DB2016Monitoring --> SQL Server에 있는 Database 중 연결하려는 Database Name
client_charset = UTF-8
tds_version = 8.0
7. Perl 스크립트 작성 및 연결 확인.
- /etc/odbc.ini 에 작성한 내용을 기반으로 아래 내용을 자신의 환경에 맞게 작성한다.
#!/usr/bin/perl use DBI; my @dsns = DBI->data_sources('ODBC'); foreach my $d (@dsns) { print "$d\n"; } my $dbh = DBI-> connect('dbi:ODBC:DB2016', "dymoon", "dymoon00"); my $sql = "SELECT count(*) FROM [DB2016Monitoring].[MonitorData].[Session]"; my $sth = $dbh->prepare($sql); $sth->execute(); while ( @first = $sth->fetchrow_array ) { foreach $field (@first) { print "field: $field\n"; } } $dbh->disconnect(); |
8. 확인
- Perl 스크립트 실행하여 정상적인 값이 나오면 된다.
'펄스크립트' 카테고리의 다른 글
[펄스크립트] foreach (0) | 2017.04.02 |
---|---|
[펄스크립트] 날짜 가져오기 (0) | 2017.04.02 |
[펄스크립트] 루프(loop) (0) | 2016.04.18 |