페이지 트리

이 문서는 root 권한이 없는 시스템에서 MS SQL등의 데이터베이스 서버에 command line으로 접속하는 방법을 정리한다.

바이너리 준비

실제 Linux 환경에 root 권한이 없어 패키지 설치가 불가하므로 별도의 임시 서버에서 바이너리를 준비한다.

  1. 실제 구성할 서버와 동일한 OS 버전의 VM 준비
  2. mssql tool 설치

    curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo
  3. 설치된 파일 묶음 만들기
    - MSSQL 도구는 CentOS의 경우 /opt에 설치됨

    cd /opt
    tar -zcvf /tmp/mssql.tar.gz mssql_tools microsoft

     - odbc library 묶음 만들기

    cd /usr/lib64
    tar -zcvf /tmp/libodbc.tar.gz libodbc.tar.gz libodbc*

     odbcinst binary 복사

    /usr/bin/odbcinst

실제 환경 구성

임시 서버에서 준비된 바이너리를 이용해 실제 환경을 구성한다.

  1. 파일 압축 해제

    mkdir ~/mssql
    cd ~/mssql
    tar -zxvf ~/Downloads/mssql.tar.gz
    mkdir lib64
    cd lib64
    tar -zxvf ~/Downloads/libodbc.tar.gz
  2. odbc driver 설정

    vi ~/mssql/microsoft/msodbcsql17/etc/odbcinst.ini
    [ODBC Driver 17 for SQL Server]
    Description=Microsoft ODBC Driver 17 for SQL Server
    Driver=/home/username/mssql/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1   <-- 바이너리 환경에 맞게 경로 수정
  3. 실행 환경 변수 설정

    export PATH="$PATH:$HOME/mssql/mssql-tools/bin"
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/mssql/lib64"
    export ODBCSYSINI=$HOME/mssql/microsoft/msodbcsql17/etc

서버 접속 시험

  1. 쿼리 파일 생성

    USE <database name>
    GO
    SELECT TOP (100) *
      FROM MY_TABLE
    GO
  2. 쿼리 실행

    sqlcmd -U <username> -P <password> -S <SQL sever IP>,<port number>  -i <쿼리 파일 이름>
    예) sqlcmd -U curvc -P 비밀번호 -S 10.100.10.10,1433  -i query.sql 

쿼리 결과 저장

CSV 출력

HEADER 포함

sqlcmd -U <username> -P <password> -S <SQL sever IP>,<port number>  -i <쿼리 파일 이름>  -W -f 65001 -s "," -o "<OutputFilePath>"

HEADER 제외

sqlcmd -U <username> -P <password> -S <SQL sever IP>,<port number>  -i <쿼리 파일 이름>  -W -f 65001 -h -1 -s "," -o "<OutputFilePath>"


참고

https://www.easysoft.com/support/kb/kb00635.html

  • 레이블 없음