리눅스에서 다른 서버에 있는 MSSQL 연결하기

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