SQL Linux fsync 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?)

 

·       Version : SQL Server Linux

 

 

PostgreSQL에서 fsync() 오류처리는 안전하지 않으며 XFS에서 데이터 손실이  발생할 있다는 내용이 있다.

·       PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS : https://www.postgresql.org/message-id/flat/CAMsr%2BYE5Gs9iPqw2mQ6OHt1aC5Qk5EuBFCyG%2BvzHun1EqMxyQg%40mail.gmail.com#CAMsr+YE5Gs9iPqw2mQ6OHt1aC5Qk5EuBFCyG+vzHun1EqMxyQg@mail.gmail.com

 

이번 포스트는  SQL Server에서도 Linux 동일한 문제가 발생하는지 유효성을 검증하는 내용으로,  SQL Server 경우 O_DIRECT 사용하기 때문에 PostgreSQL 같은 문제가 발생하지 않는다.

·       Direct I/O : https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/global_file_system/s1-manage-direct-io

 

응용 프로그램이 버퍼된 쓰기를 수행하고 성공을 수신한다. (이는 안정된 미디어 파일 시스템 캐시에 데이터를 저장할 있음을 의미한다.) fsync/fdatasync 데이터가 안정적인 미디어에 저장되도록 하는데 사용된다. 안정적인 미디어 쓰기는 동기화 작업중에 발생하며 EIO 오류를 보고하는 여러가지 이유로 (디스크 공간부족, SAN 연결 끊김 ) 실패할 있다.

·       fsync/fdatasync : http://man7.org/linux/man-pages/man2/fdatasync.2.html

 

 

 

위의 PostgreSQL링크에 설명된 문제는 동기화에서 오류를 반환하지만 캐시된 페이지의 상태를 지울수 있다 것이다. 다음 동기화는 캐시된 쓰기가 안정적인 미디어로 플러시 되지 않지만 응용 프로그램에 알려졌다는 것을 의미하는 ESUCCESS 반환한다.

 

데이터베이스 응용프로그램이 백업 파일을 열어 파일 시스템 캐싱 (~_O_DIRECT) 허용한다고 가장헌다. SQL Server 작업을 수행하지 않으며  실제로 Linux SQL Server에서 작업을 수행할 없도록 했다.

1.       버퍼링된 I/O 사용하여 백업이 시작된다.

2.       백업이 진행되면서 파일 시스템 캐시에 쓰기가 발생한다.

3.       파일 시스템 캐시 쓰기가 발생하는 동안 동기화에 대한 외부 호출이 발생한다.

4.       백업에 속한 버퍼에서 동기화쓰기 오류가 발생한다. 데이터베이스 응용프로그램 외부의 응용 프로그램에서 동기화를 호출하여 데이터베이스 응용프로그램이 실패를 인식하지 못한다.

5.       백업이 끝나면 데이터베이스 응용 프로그램에서 fdatasync 실행하고 EIO 반호나하는 대신 ESUCCESS 반환된다.

6.       fdatasync 성공적으로 완료되면 미디어 백업이 안정적으로 강화되고 데이터베이스 응용 프로그램이 트랜잭션 로그의 비활성 부분을 자른다.

7.       데이터베이스에 이상 트랜잭션 조작 또는 복구를 수행 적절한 로그 레코드가 없고, 일단 유효하다고 생각된 백업파일이 유효하지 않는다.

 

문제는 SQL Server 데이터베이스, 로그 백업파일에 영향을 미치지 않는다. SQL Server 파일 시스템 캐시를 무시하기 위해 O_DIRECT 사용하여 이러한 파일 형식을 연다. Linux SQL Server 강제 플러시 모드에서 실행 중인 경우에도 파일은 O_Direct 열리므로 문제가 발생하지 않는다.

 

 

[참고자료]

·       SQL Server Linux: fsync and Buffered I/O : https://blogs.msdn.microsoft.com/bobsql/2018/12/18/sql-server-linux-fsync-and-buffered-i-o/

 

 

2019-09-16 / Sungwook Kang / http://sungwookkang.com

 

 

SQL Server, SQL Linux, File System, Windows, Linux, fsync, fdatasync, O_Direct

SQL Server SQL Linux에서 인스턴스 파일 초기화 차이점

 

·       Version : SQL Server, SQL Server Linux

 

SQL Server 로그 파일 또는 데이터 파일이 증가하거나 새로 작성될때, 인스턴트 파일 초기화 작업을 진행한다. 이번 포스트에서는 인스턴스 파일이 초기화 될때, 기본 파일 시스템 구현과 Windows Linux 간의 동작 차이를 알아본다.

·       Database File Initialization : https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-2017

 

SQL Server 데이터 로그 파일을 만들거나 확장(증가)할때 아래 API 호출 한다.

·       CreateFile : 파일 작성 또는 열기

·       SetEndOfFile : 파일 크기를 설정하고 I/O 장치에서 공간을 확보

·       SetFileValidData : 유효한 데이터 크기 설정

 

파일이 로그 파일(LDF) 경우 SQL Server 알려진 패턴값을 할당된 공간에 쓴다. 데이터 파일 (MDF, NDF) 경우 SQL Server 인스턴스 파일 초기화 추적 플래그 1805 설정을 확인하여 할당된 공간에 패턴값을 쓸지 여부를 결정한다.

TF 1805 : 데이터 파일에 대한 인스턴스 파일 초기화를 비활성화 한다.

참고 : 스탬핑은 일반적으로 최적의 성능과 Windows Linux 파일 시스템 페이지 블록크기 정렬과 정렬을 위해 4MB 청크로 수행

 

[Windows]

Windows 파일 시스템(NTFS, RTFS)에는 파일을 즉시 초기화 하기 위한 개의 멤버키가 있다.

·       EOF : 파일 위치

·       VDL : 유효한 데이터 길이 위치

 

Empty File

파일이 처음 작성될  EOF VDL 모두 파일의 시작을 가리킨다.

·       EOF = 0

·       VLD = 0


     

 

SetEndOfFile

SetEndOfFile 파일을 확장하여 I/O 장치에서 공간을 확보하고 EOF 값을 조정한다. VLD 값은 변경되지 않은 상태로 유지된다.

·       EOF = 10G

·       VLD = 0

   

SetFileValidData

SetFileValidData VDL 이동하는데 사용된다. VDL 기록된 것으로 간주되는 경우(쓰기가 수행되지 않은 경우에도) VDL 오프셋 이전의 모든 데이터와 VDL 이전의 공간 읽기는 I/O 장치에서 오래된 데이터를 반환할  있다. VDL 이후의 데이터는 유효하지 않은 것으로 간주되며 읽기 요청에 대해 0 리턴된다.

·       EOF = 10GB

·       VDL = 1GB

참고 : 보안 고려사항과 관련된 내용은 위의Database File Initialization 문서를 참고한다.

 

Write beyond the current VDL (WriteFile*)

VDL 오프셋 이상으로 쓰기가 발생하면 WindowsVDL 이동하여 쓰기를 수용하고 이전 VDL 쓰기 요청 시작 사이의 오프셋에 0 쓴다.

·       EOF = 10GB

·       이전 VDL =1 GB

·       VDL = 5GB

 

Instant File Initialization (New File)

VDL 증분 변경 대신 SQL Server SetEndOfFile 빠른 할당 기능을 사용하고  동일한 오프셋으로 SetFileValidData 호출한다. VDL이전의 모든 데이터는 Windows 파일 시스템에 의해 쓰여진(유효한) 것으로 간주된다. 인스턴트 파일 초기화가 활성화  경우 Windows 0 쓰지 않으며 SQL Server 데이터 파일의 패턴을 스탬프 처리 하지 않는다. 내부 SQL Server 데이터베이스 할당 구조는 SQL Server 데이터 파일 할당  유효한 데이터 읽기 활동을 추적한다.

 

Instant File Initialization (Grow)

인스턴스 파일 초기화를 사용하여 파일을 확장하면  오프셋으로 SetEndOfFile  SetFileValidData 수행된다. Windows   오프셋과 이전 오프셋 사이의 데이터를 유요한 것으로 취급한다.

 

 

[Linux]

Fallocate(http://man7.org/linux/man-pages/man2/fallocate.2.html) 시스템 호출(ABI) 사용한 Linux 지원 파일 할당 Windows API호출은 아래와 같이 Linux ABI 호출에 매핑 된다.

·       CreateFile : Linux 사용

·       SetEndOfFile : Linux fallocate 사용

·       SetFileValidData : Linux Noop

 

Windows Linux 파일 시스템의 주요 차이점은 유효한 데이터 길이( VDL) 아닌 범위를 추적한다. Linux에서 범위에는 I/O 장치에 쓰여 졌는지 여부를 나타내는 플래그가 포함된다.

Empty File

파일이 처음 작성될   EOF= 0이고 포함 범위는 기록되지 않도록 (N)으로 설정된다. 쓰지 않은 범위의 읽기는 Linux에서 항상 0 반환한다. LinuxI/O 장치를 사용하지 않지만 단순히 쓰지 않는 범위로 추적된 공간에 대해 리턴 버퍼를 0으로 채운다.

 

힌트 : 익스텐트 크기  조정에 대해서는 Linux 파일 시스템 설명서를 확인한다. 기본 크기는 일반적으로 최적의 성능을 위해 SQL Server 페이지는8K  64K 범위 경계에  맞는 메모리 페이지 크기 경계(주로4K) 정렬된다.

 

SetEndOfFile

파일 크기 증가는 대체 호출로 발생한다. Linux I/O 장치에서 공간을 확보하고  EOF 추적 범위 메타 데이터를 설정하여 기록되지 않음을 나타낸다. Fallocate SetEndOfFile Windows 파일 시스템의 공간을 확보하는 것처럼 공간을 확보하여 대용량 파일을 빠르게 생성할  있다. 차이점은 SetFileValidData이다. Linux 실제 쓰기 없이 범위 추적을 쓰기 설정하는 기능을 제공하지 않는다.

 

 

성능 고려 사항 : 대상 파일 시스템에 대해 fallocate 지원되지 않으면 SQL Server ftruncate 사용한다. 이름과 달리 ftruncate ABI 파일을 늘리는데 사용될  있지만  프로비저닝된 조장이다.(공간은 메타데이터만 업데이트 되지 않는다.) ftruncate 필요한 경우 실제 공간을 확보하고 제공하기 위해 SQLPAL 파일에 0 쓴다. SQLPAL 프로세스에 대한 오류가 없고 읽기 동작이 없다.

 

Write

 번째 쓰기가 수행되면 범위에 대한 메타 데이터도 업데이트 된다. 쓰기  쓰기 되지 않은 데이터를 추적하기 위해 익스텐트를 분할하거나Linux 커널에 의해 확장된 쓰기는 디스크의 공간에 0 쓰므로 전체 익스텐트가 쓰기 된것으로 표시될  있다.

 

참고 : 대부분의 Linux 파일 시스템에서는  번의 쓰기 요청이 발생하지만 쓰기 크기  오프셋 정렬에 따라  커질수 있다. (데이터 파일 요청1개와 메타데이터 변경 요청 1)

 

 

Windows 에서 SetFileValidData 단일  메타 데이터 작업이다. VDL 설정되면 쓰기(순차 또는 임의) VDL == EOF 추가 메타 데이터 업데이트가 필요하지 않다. Linux에서 쓰기에는 데이터 쓰기 메타 데이터 쓰기가 필요한 익스텐트 업데이트가 필요하다. Linux 또는 Windows에서 가능한 빨리 파일을 쓰고 확장할 있다. 그러나 Linux에서 처음 쓰기를 수행하면 메타 데이터가 유지관리 된다.

·       데이터베이스에서 쓰기 속도가 중요한 경우 익스텐트 파일 초기화를 사용하고 번째 쓰기에 추가 오버헤드가 발생하도록 한다.

 

참고 : 대부분의 쓰기 작업은Checkpoint 또는 Lazy Write 같은 백그라운드 프로세스로 수행되므로 SQL Server에서 오버헤드를 숨기는 경우가 많다. 활성 SQL Server 세션에서 쓰기가 발생할 있으므로 대량 로드는 예외이다.

 

·        쓰기 속도를 늘릴수 있는 경우 -T1805 사용하면 데이터베이스가 쓰기 확장 중에 데이터파일 공간을 스탬핑 되도록 있다. 스탬핑은 청크로 최적화되어 있으며 번째 쓰기 데이터 메타 데이터 작업이 발생하는 쓰기 경로가 된다. 위치가 기록(스탬프) 되면 이상 추가 메타 데이터 쓰기가 필요하지 않다.

 

참고 : 파일 시스템이 fallocate 지원하지 않으면 SQLPAL 의해 파일에 0 기록된다. 로그 파일(LDF) 알려진 패턴(0으로 작성) 표시하며 SQLPAL 공간을 0으로 채울때 메타데이터가 이미 업데이트 되었으므로 데이터 파일에 대한 인스턴스 파일 초기화를 안전하게 유지할 있다.

 

[참고자료]

https://blogs.msdn.microsoft.com/bobsql/2018/12/10/sql-server-instant-file-initialization-setfilevaliddata-windows-vs-fallocate-linux/

 

 

2019-09-13 / Sungwook Kang / http://sungwookkang.com

 

 

SQL Server, SQL Linux, File System, Windows, Linux, SetFileValidData (Windows) vs fallocate (Linux), T1805, SetEndOfFile, SetFileValidData, VDL

 

SQL Linux Instance Name 변경

 

·         Version : SQL Linux, Ubuntu

 

SQL Linux 에서 인스턴스 이름을 변경하는 방법에 대해서 알아본다. 인스턴스 이름을 변경하는 방법은 Windows 환경의 SQL Server 인스턴스 이름 변경 방법과 동일하다. 아래 실습을 통해서 SQL Linux에서 변경하는 방법에 대해서 알아 본다.

 

sqlcmd 유틸리티를 사용하여 SQL Linux 접속하여 현재의 인스턴스 이름을 확인한다. 현재 필자의 SQL Linux 인스턴스 이름은 “ubuntu” 것을 확인할 있다.

sqlcmd -S localhost -U sa

 

select @@servername

go

 

 

아래 명령은 기존의 SQL Linux 인스턴스 이름을 삭제하는 명령이다. 명령어 뒤에 위에서 검색한 서버 이름을 입력한다.

sp_dropserver ubnutu

 

아래 명령을 실행하여 시스템 메타데이터에 새로운 인스턴스 이름을 추가한다.

sp_addserver sqlmvp, local

 

 

인스턴스 이름을 변경하고 SQL Linux 서비스를 재시작하기 전까지 새로운 이름이 반영되지 않는다. sqlcmd 유틸리티를 종료하고 linux 에서 아래 명령을 사용하여 서비스를 재시작 한다.

systemctl restart mssql-server

 

 

서비스 재시작이 완료되면 SQL Linux 접속하여 서버 이름을 확인한다. 서버 이름이 변경된 것을 확인할 있다.

 

 

 

2018-06-22 / Sungwook Kang / http://sqlmvp.kr

 

SQL Server, SQL Linux, Instance name change, 인스턴스 이름 변경, SQL 이름 변경, 명명된 인스턴스

'SQL Server > SQL on Linux' 카테고리의 다른 글

SQL Linux 업그레이드  (0) 2019.03.25
SQL Linux에서 Job Agent 설치  (0) 2017.09.13
SQL Linux에서 Windows SQL 백업 파일 복원  (1) 2017.09.13
Linux에서 Network I/O 확인  (0) 2017.09.13
SQL Linux에서traceflag 활성화  (0) 2017.09.13

SQL Linux 업그레이드

 

·         Version : SQL Linux, Ubuntu

 

SQL Linux 최신버전으로 업그레이드 하는 방법에 대해서 살펴본다. 필자는 Ubuntu SQL Linux 설치된 상태이다. SQL Linux 업그레이드 진행 하기전 전체 사용자 데이터베이스 백업을 진행한다. 만약 업그레이드가 잘못되어 데이터베이스를 복원해야 경우를 대비해서 백업본을 보관하는 것이 좋다.

 

서버 로컬 접속 또는  Putty등을 사용하여 Ubuntu 서버에 연결한다.필자의 경우 Putty 사용하여 Ubuntu 서버에 접속 하였다.

 

Ubuntu에서 기존에 실행되고 있는 SQL Linux 버전을 확인한다. Sqlcmd 유틸리티를 사용하여 SQL Linux 연결하여 정보를 확인 있다. (Sqlcmd외에도 다양한 연결방법이 있으니 sqlcmd 사용할 필요는 없다.)

sqlcmd -S localhost -U sa

 

SELECT @@VERSION

GO

 

 

“apt-get” 명령을 사용하여 설치된 패키지 mssql-server 세부 사항을 확인할 수도 있다. apt-get 유틸리티는 Ubuntu APT(Advanced Packaging Tool)라이브러리를 사용하여 소프트웨어 패키지 설치, 기존 소프트웨어 패지키 제거, 기존 소프트웨어 패키지 업그레이드 등에 사용되는 무료 패키지 관리 명령어 프로그램이다. 아래 명령을 사용하여 mssql-server 버전, 체크섬 크기, 설치된 크기, 카테고리 간단한 설명과 함께 패치지 정보를 확인할 있다.

apt-cache show mssql-server

 

 

SQL Server 업그레이드 있는 사용가능한 업데이트 파일이 있는지 확인한다. 필요한 작업은 아니지만 업그레이드 프로세스를 이해하는데 도움이 된기 때문에 간단히 살펴본다. 명령은 설치된 모든 패키지에 대해 사용가능한 업데이트를 표시한다.

apt-get --just-print upgrade

 

 

현재 mssql-server 보류중인 업데이트가 있으므로 apt-get update 실행하여 /etc/apt/sources.list 파일에 지정된 소스에서 패키지 인덱스 파일을 동기화 한다. Update 명령은 패키지 인덱스 파일을 최신 버전으로 업데이트 한다. 아래 명령을 사용하여 패키지를 업데이트 한다.

sudo apt-get update

 

패키지 인데스 업데이트가 완료 되었으면 아래 명령을다시 실행하여 사용가능한 업데이트를 확인한다. 아래 스크린샷에서는 개의 패키지가 있음을 수있다. 하나는 이전 버전이고 다른 하나는 mssql-server 업그레이드하기 위해 적용해야하는 새로운 업데이트이다.

apt-cache show mssql-server

 

 

사용가능한 최신버전으로 업레이드하기 위해 아래 명령을 실행한다. 아래 명령은 최신 패키지를 다운로드 하고 /opt/mssql 있는 바이너리를 교체한다. 작업은 SQL 엔진을 교체하는 작업으로  사용자 데이터베이스에는 영향을 미치지 않지만 혹시 발생할 오류를 대비해서 처음 언급 한것처럼 백업을 것을 권장한다.

sudo apt-get install mssql-server

 

 

작업이 완료되면 SQL Server 빈드 버전이 14.0.3026.27에서 14.0.3029.16 업그레이드 것을 확인할 있다.

 

 

[참고자료]

https://www.mssqltips.com/sqlservertip/4647/upgrading-sql-server-running-on-ubuntu-to-latest-update/

 

 

2018-06-21 / Sungwook Kang / http://sqlmvp.kr

 

SQL Server, SQL Linux, SQL Upgrade, apt-get, apt-get update, apt-get install, 리눅스, linux,

SQL Server update on Docker

 

·      Version : SQL 2017, Docker

 

SQL Server on Docker 버전에서 SQL Server update 진행하는 방법에 대해서 알아본다. Docker 이미지를 업데이트 하고 모든 컨테이너에 푸시할 있는 기본 제공 명령이 없으므로 단계별로 빌드해야한다.  Docker pull 이용하여 최신 이미지를 다운로드 받아 기존 이미지를 교체 해야한다. 기존 이미지로 컨테이너를 교체해야하는 이유는 Docker 저장소 모델과 관련이 있다.

 Docker 저장소 모델은 여러 계층의 파일 시스템을 결합하여 운영체제의 통합 뷰를 만든다. 이미지 레이어는 읽기 전용이며 컨테이너를 통해 발생하는 모든 변경 사항은 쓰기 프로세스에서 복사를 통해 변경된다.  새로운 이미지가 기존 컨테이너에서 작동하지 않는 이유는 레이어는 고유한 식별자로 참조되는데, 컨테이너가 기존의 원본 이미지를 가리키고 있기 때문이다. 따라서 새로운 이미지로 기존 컨테이너를 교체해야한다.

 

현재 설치되어 있는 SQL Linux Version SQL Server 2017 RTM CU5 이다.


 

이미지의 최신 버전을 다운받으려면 docker pull 명령을 사용할 있다. 아래 명령을 실행하면 최신 업데이트 버전을 다운로드 있다.

Docker pull microsoft/mssql-server-linux:lastest

 


 

Docker stop 명령을 사용하여 SQL Server 컨테이너를 중지 시킨다.

Docker stop sql1

 

Docker rm 명령을 사용하여 기존의 컨테이너를 삭제 한다.

Docker rm sql1

 

Docker run 명령을 사용하여 새로운 sql 이미지로 컨테이너를 실행 한다.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourPassword" -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux

 

컨테이너가 정상적으로 실행되었으면 SQL Server 접속하여 버전을 확인한다. 필자의 경우 SQL Server 2017 RMT CU7으로 업그레이드 된것을 확인할 있다.


 

기존의 sql 컨테이너를 삭제하고 새로운 컨테이너를 실행 할때 위와 같은 방법으로 실행하면 기존 저장소가 삭제되기 때문에 사용자 데이터베이스 환경도 함께 삭제 된다. 따라서 docker 환경에서 컨테이너를 생성할 -v 옵션을 사용하여 컨테이터 외부에 저장소 볼륨을 만들어서 사용할 있도록 한다. 그러면 영구 저장소를 생성하여 사용할 있다.

 

 

[참고자료]

·       https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-linux-2017#repositories

·       https://facility9.com/2017/01/how-do-i-update-my-sql-server-docker-container/

 

 

2018-06-05 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

SQL Linux, SQL docker, sql update, sql linux update, docker pull, 도커, SQL 리눅스, sql 업데이트

SQL Operations Studio

-         Linux, MAC에서 사용할 있는 SQL DBMS

 

·         Version : Preview

 

SQL Server 관리하기 위한 Microsoft 툴은SQL Server Management Studio(SSMS) 있다. 툴은 Windows 환경에서 실행되며 막강한 기능을 가지고 있다. 아마 SQL Server 운영하는 대부분의 관리자는 DBMS 운영하는 관리자와는 달리 서드파티의 툴을 사용하지 않고 대부분 SSMS 사용하고 있을 것이다. 그만큼 SSMS 기능은 엄청나다.

 

최근 Microsoft 오픈소스 친화적인 정책을 지향하면서 다양한 툴들이 Linux 또는 Windows 아닌 운영체제에서 실행될 있게 되었다. 대표적인 툴이 Visual Studio Code 것이다. 이처럼 Microsoft 크로스 플랫폼 또는 멀티 플랫폼을 지원하는 다양한 서비스를 출시하고 있다.

 

2017 Microsoft에서 SQL Server Linux 버전을 출시하였다. 기본적인 기능은 이미 Windows 버전의 SQL Server 거의 동일하다. 일부 편의 기능만 아직 출시 되지 않았을 , DBMS 기능은 훌륭하다. 하지만 SSMS Windows 버전 밖에 지원되지 않아, SQL Server Linux 설치함에도 불구하고 관리툴은 윈도우 환경에서 실행하여야 했다. 하지만 최근 Microsoft에서는 SQL Operations Studio라는 새로운 DB 관리 툴을 출시 하였으며, 윈도우가 아닌 다른 환경도 지원하게 되었다. 이번 포스트에서는 SQL Operations Studio 대해서 살펴본다.

 

SQL Operations Studio 아래 링크에서 다운로드 받을 있다. 포스팅 하는 시점에는 Preview 버전이 공개된 상태로 향후 어떠한 많은 기능이 추가될지 기대 된다.

·         Download and install Microsoft SQL Operations Studio (preview)

https://docs.microsoft.com/en-us/sql/sql-operations-studio/download

 

다운로드 받은 파일을 압축 해제 한다. SQL Operations Studio 설치형으로 실행되는 툴이 아닌 exe 바로 실행하여 사용하는 툴이다. 그래서 따로 설치 과정이 필요 없다. Sqlops.exe 실행 한다.


 

SQL Operations Studio 실행한 화면이다. VS Code 비슷한 UI 하고 있다.


 

서버 등록 정보를 생성하기 위해 왼쪽의 메뉴바에서 Server 클릭하고 새로운 서버를 등록한다.


 

접속하려는 SQL Server 정보를 입력한다. 필자의 경우 로컬에 설치된 SQL Server 접속 정보를 입력하였으며, 여러번의 테스트로 인해 최근 히스토리에 서버 내용이 표시됨을 있다.


 

서버 정보를 입력하고 처음 서버를 접속했을 화면이다. 기본적으로 현재 생성되어 있는 데이터베이스에 대한 정보를 표시해 주며, 생성되어 있는 데이터베이스의 디스크 사용량 백업 유무에 대한 관리적인 관점에서의 정보도 표시해서 보여준다. (일반적으로 DBA 들에겐 크게 도움이 되지 않는 정보이지만 DBA 아닌 사람들에겐 유용한 정보일 듯하다. 하지만 해당 정보를 생성하기 위해 많은 쿼리를 호출하는 과정이 대용량 서비스 경우 살짝 걱정이 된다.)


 

 

쿼리를 호출하기 위해 쿼리창을 실행한다. 상단 메뉴에서 New Query 실행하여 쿼리 창을 실행 있지만 이렇게 실행하면 해당 쿼리 창을 다시 DB 연결해야하는 번거로움(순수 에디트 창만 오픈) 있다. 그래서 쿼리를 실행하려는 데이터베이스에서 마우스 오른쪽을 클릭하여 New Query 선택한다. 그러면 해당 데이터베이스에 연결된 쿼리창이 실행 된다.


 

 

AdventureWorks 데이터베이스에 쿼리를 실행해 보았다. 기본적으로 SSMS 동일하게 결과 집합이 표시된다. 가지 흥미로운 점은 Visual Studio 처럼 해당 리소스에 대해서 직접 참조하거나 Peek 창으로 오버레이하여 참조되는 정보를 확인할 있다. 여기서 참조 되는 정보는 테이블 정보라 있다.


 

 

아래 그림은 Go to Define 했을 새창으로 테이블 정보를 나타낸 모습이다.


 

 

실행 계획 버튼으로 쿼리 결과에 대한 실행 계획도 바로 확인 있다. 물론 SSMS 처럼 실행 중의 쿼리 실행 계획 아직은 많은 기능이 제공되지는 않지만 부족한 기능은 정식버전에서 많이 추가 될것이라 생각한다.


 

결과 집합 창의 오른쪽에 위치한 가지 아이콘이 있는데, CSV, Excel, JSON 형식의 파일로 저장할 있는 기능이다. 아마도 많은 사용자들이 결과셋을 파일로 저장하는데 편의 기능을 보충하기 위해 퀵메뉴를 지원하는 느낌이었다.


 

결과셋 오른쪽 아이콘 중에 마지막 아이콘은 Chart 아이콘인데, 결과에 대한 내용을 Chart 보여준다. Chart 가지 형태로 제공되고 있었다. 하지만 어떤 내용을 기준으로 차트를 생성하는지는 정확히 없었다. 만약 간단한 카운트나 비율에 대한 결과 값을 조회 하였다면 차트 기능을 이용하여 굳이 엑셀로 내려 받아서 차틑를 그리지 않아도 확인 있을 했다.


 

아직은 Preview 버전이어서 기존의 SSMS 비하면 많은 기능이 지원되지 않지만 가벼우면서 기본기에 충실한 툴의 느낌이 들었다. 아직은 프로파일러 기능이나, 어드바이저 기능들이 제공되지 않지만 시간이 지나면서 많은 기능이 포함되리라 생각이 든다. 무엇보다 Windows 환경이 아닌 곳에서도 SQL Operations Studio 설치해서 사용할 있으니 Linux   다양한 환경에서 SQL Server 생태계 확대가 기대된다.

 

[참고자료]

·         https://docs.microsoft.com/en-us/sql/sql-operations-studio/download

·         https://blogs.technet.microsoft.com/dataplatforminsider/2017/11/15/announcing-sql-operations-studio-for-preview/

·         https://docs.microsoft.com/en-us/sql/sql-operations-studio/quickstart-sql-server

 

 

 

 

 

2017-12-04 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

 

SQL Server, MSSQL, SQL 2016, SQL Server Management Studio, SSMS, SQL Operations Studio, SQL 관리 , DB 관리 , SQL Linux, SSMS Linux



SQL Linux에서 Job Agent 설치

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서Job Agent 설치하는 방법에 대해서 알아본다. SQL Server Job Agent 반복적인 작업을 예약하여 실행 있는 서비스이다.

 

SQL Linux Job Agent 설치하기에 앞서 update 명령을 사용하여 설치된 패키지를 최신버전으로 업데이트 있도록 한다.

sudo apt-get update

 

 

패키지 동기화가 완료되면 아래 명령을 사용하여 SQL Server vNext 최신 버전을 설치한다.

sudo apt-get install mssql-server

 

 

설치가 완료되었으며 update 명령을 사용하여 다시 한번 최신 버전을 동기화 한다.

sudo apt-get update

 

 

SQL Server 설치 update 완료되었으면 아래 명령을 실행하여 SQL Job Agent 설치 한다.

Sudo apt-get install mssql-server-agent

 

 

설치가 완료되면 안내 구문에 따라 SQL Server서비스를 재시작 한다.

systemctl restart mssql-server

 

아래 명령은 서비스가 정상적으로 실행되고 있는지 상태를 나타낸다.

Systemctl status mssql-server

 

SQL Server 재시작이 완료되고 서비스가 정상적으로 실행 되었으면  SSMS 실행하여 SQL Linux 연결한다. SSMS에서 Job Agent 실행중인 것을 확인할 있으며, 예약 작업을 등록하여 사용할 있다.

 


[참고자료]

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-sql-agent

 

 

2017-08-08 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 Job Agent 설치, SQL Linux  Job Agent, SQL 2017, SQL vNext, install SQL job agent


'SQL Server > SQL on Linux' 카테고리의 다른 글

SQL Linux Instance Name 변경  (0) 2019.03.25
SQL Linux 업그레이드  (0) 2019.03.25
SQL Linux에서 Windows SQL 백업 파일 복원  (1) 2017.09.13
Linux에서 Network I/O 확인  (0) 2017.09.13
SQL Linux에서traceflag 활성화  (0) 2017.09.13

SQL Linux에서 Windows SQL 백업 파일 복원

 

·         Version : ubuntu, SQL Server Linux

 

Windows SQL Server에서 생성한 백업 파일을 Linux SQL 에서 복원하는 방법에 대해서 알아본다. 기본적으로 Windows SQL Server에서 수행한 백업에서 Linux SQL Server에서 복원하는 방법은 Windows 거의 유사하다. 다른점은 Windows  Linux 디렉터리 구조가 다르므로 RESTORE 명령과 함께 MOVE 옵션을 사용하여 디렉터리 경로를 입력하면 된다. (Windows에서도 물리적 위치를 변경할 경우 move 명령을 사용한다.- 결국 복원 방식은 동일함.)

 

편의상 실습은 SQL Linux에서 Adventurework2014.bak 샘플 데이터베이스를 다운로드 받아서 복원한다. (필자는 편의상 /var/tmp 디렉터리를 사용하였다.)백업 파일 정보를 확인하는 명령을 실행하여 현재 bak 파일에 포함되어 있는 경로를 확인한다. Windows 경로가 포함되어 있는 것을 확인 있다.

restore filelistonly from disk = ‘/var/tmp/AdventureWork2014.bak’

 

 

아래 백업 명령을 실행하여 데이터베이스를 복원한다. 이때 MOVE 옵션을 사용하여 디렉터리를 변경한다.

restore database AdventureWorks2014 from disk = ‘/var/tmp/AdventureWorks2014.bak’ with recovery,

move ‘AdventureWorks2014_Data’, to ‘/var/opt/mssql/data/AdventureWorks2014.mdf’,

move ‘AdventureWorks2014_Log’ to ‘/var/opt/mssql/data/AdventureWorks2014_log.ldf’

 

 

 

정상적으로 데이터 파일이 생성되고 DB 복원된 것을 확인할 있다.

 

 

2017-07-28 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 복원, SQL Linux 백업 파일 복원, SQL 2017, restore database


'SQL Server > SQL on Linux' 카테고리의 다른 글

SQL Linux 업그레이드  (0) 2019.03.25
SQL Linux에서 Job Agent 설치  (0) 2017.09.13
Linux에서 Network I/O 확인  (0) 2017.09.13
SQL Linux에서traceflag 활성화  (0) 2017.09.13
SQL Linux에서 dump file 위치 변경  (0) 2017.09.13

Linux에서 Network I/O 확인

 

·         Version : ubuntu

 

SQL Server Linux 버전 출시로 MS SQL DBA분들이 Linux 대한 관심이 많이 높아졌다. 이번 팁에서는 Linux에서 SQL Server 사용할때 알아두면 좋은 리눅스 팁을 공유한다. 이번 포스트는 Linux에서 Network I/O 확인하는 방법이다.

 

[netstat]

네트워크 통계의 약자인 netstat 명령어는Windows 사용자에게도 알려져있는 명령이다. 사용방법은 Windows 거의 동일하지만 Linux에서는 명령을 사용하면 많은 정보를 얻을 있다.

netstat -i

 

-i 옵션은 네트워크 인터페이스를 나열한다. 명령을 사용하면 인터페이스 이름과 보내고 받은 패킷을 확인할 있다.

·         RX-OK / TX-OK : 정상적인 패킷

·         RX-ERR / TX-ERR : 체크섬 오류로 거부된 패킷

·         RX-DRP / TX-DRP : 전체 퍼버에서 누락된 패킷

·         RX-OVR / TX-OVR : 시스템이 바빠서 누락된 패킷

 

netstat -ltu

 

 

-ltu 옵션은 수신포트(l) TCP(t) UDP(u) 표시한다. 또한 -p옵션을  (-ltup) 추가하면 수신 대기중인 프로그램이 표시 된다.

 

[slurm]

Slurm 터미널 기반의 네트워크 모니터링 도구이다. 유틸리티 표준 배포와 함께 배포되지 않으므로 아래 명령을 사용하여 설치 해야 한다.

sudo apt-get install slurm

 

설치가 완료되었으면 모니터할 인터페이스 이름을 인수로 전달하여 명령어를 실행 한다. 예를 들어 enp0s3 인터페이스를 모니터링 할려면 다음과 같이 명령어를 실행 한다. (인터페이스 이름은 netstat -i 확인한다.)

slurm -i enp0s3

 

그림에서 보듯이 네트워크 활동을 표시하는 그래프가 상단 패널에, 텍스트 정보는 하단 패널에 나타난다.

 

[speedometer]

기본 배포에 포함되어 있지 않으므로 아래 명령어를 설치를 해야한다.

sudo apt-get install sppedometer

 

아래 명령어는 enp0s3 인터페이스의 RX/TX 모니터링하는 명령이다.

speedometer -tx enp0s3 -rx enp0s3

 

 

여러 인터페이스를 모니터링 하려면 각각의 인터페이스명을 나열 한다.

speedometer -tx enp0s3 -rx enp0s3 -tx enp0s8 -tx enp0s8

 

[ifstat]

기본 배포에 포함되어 있지 않으므로 아래 명령어를 설치를 해야한다.

sudo apt-get install ifstat

 

명령을 실행하면 아래와 같이 네트워크 사용량이 지속적으로 나타난다.

 

[nethogs]

응용프로그래별로 네트워크 사용량을 확인할 편리 하다. 기본 배포에 포함되어 있지 않으므로 아래 명령어를 설치를 해야한다.

sudo apt-get install nethogs

 

그림에서 볼수 있듯이 PID, 사용자, 프로그램 별로 네트워크 사용량을 확인 있다. 유틸리티는 root 권한으로 실행 해야 한다.

 

[참고자료]

https://www.mssqltips.com/sqlservertip/4846/linux-administration-for-sql-server-dbas-checking-network-io/

 

 

 

2017-07-18 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux disk, 리눅스에서 네트워크 사용량 확인, SQL 2017, check network usage on Linux, netstat, slurm, speedometer, ifstat, network I/O,


SQL Linux에서traceflag 활성화

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서traceflag 활성화 하는 방법에 대해서 알아본다. 기존 Windows SQL Server에서 추적 플래그를 사용하려면 아래 가지 방법 하나를 사용할 있다.

·         DBCC Traceon (traceflag, -1) (https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-transact-sql)

·         SQL Server Configuration manager

 

SQL Linux에서 추적플래그를 전역으로 활성 또는 비활성화 하려면 mssql-conf 라는 SQL Server 구성 관리자 유틸리티를 사용해야 한다.  우선 아래 명령어로 현재 설정되어 있는 모든 추적플래그에 대한 정보를 확인한다.

dbcc tracestatus(-1)

 

Linux에서 추적 플래그를 활성화 하기 위해 mssql-conf 유틸리티를 사용하여 추적 플래그를 활성화 한다. 설정이 완료되면 SQL Server 서비스를 재시작 한다.

sudo /opt/mssql/bin/mssql-conf traceflag 1222 on

 

서비스 재시작이 완료 되었으면 현재 설정되어 있는 traceflag 확인 한다. Traceflag 1222 적용된 것을 확인할 있다.

dbcc tracestatus(-1)

 

 

여러개의 추적 플래그를 사용하려면 아래 스크립트처럼 추적 플래그를 나열한다.

sudo /opt/mssql/bin/mssql-conf traceflag 1204 3205 on


 

 

추적 플래그를 중지하려면 off 명령을 사용한다.  중지하려는 추적플래그 파라메터를 함께 명시 한다. 설정이 완료 되면 SQL Server 서비스를 재시작 한다. 명시된 추적플래그가 중지된 것을 확인할 있다.

sudo /opt/mssql/bin/mssql-conf traceflag 1222 1204 3205 off

 

 

추적 플래그를 설정할 때는 운영중인 서버에 적용하기 전에 반드시 테스트 서버에 적용하여 사이드이펙트를 체크해야 한다.

 

[참고자료]

·         https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf#a-idtraceflagsa-enabledisable-traceflags

·         https://www.mssqltips.com/sqlservertip/4762/how-to-enable-and-disable-sql-server-traceflags-globally-for-linux-instances/

·         https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-transact-sql

 

2017-07-14 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 추적플래그 설정, SQL Linux traceflag, SQL 2017, dbcc tracestatus, traceflag on, traceflag off, mssql-conf

SQL Linux에서 dump file 위치 변경

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서 dump file 위치 변경하는 방법에 대해서 알아본다. Dump file 대한 경로 변경은  /opt/mssql/bin 폴더에 있는 mssql-conf 스크립트 내용을 변경하여 dump file 위치를 변경할 있다. 기본적으로 덤프 디렉토리는 SQL Server 설치할때 설정된 /var/opt/mssql/log 이다.  아래 명령어를 이용하여 해당 디렉토리에 대한 파일을 확인할 있다.

sudo –lrt /var/opt/mssql/log

 

 

이번 실습에서는 /tmp/dump 라는 디렉토리를 생성하고 dump file 경로를 변경한다. 우선 아래 스크립트를 실행하여 /tmp/dump 디렉토리를 생성한다.

sudo mkdir /tmp/dump

 

sudo ls –lrt /tmp

 

 

 SQL Server 생성한 디렉토리에 접근할 있도록 폴더의 소유자와 그룹을 변경한다.

Sudo chown mssql /tmp/dump

Sudo chgrp mssql /tmp/dump

 

아래 명령을 실행하여 dump file 생성 위치를 변경한다. 변경 SQL Server 서비스를 재시작 해야  한다.

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /tmp/dump

 

 

-NOTICE-

현재테스트 환경의 버전이 SQL Evaluation 버전이어서인지 변경된 디렉토리에 dumpfile 생성되지 않았다.

 

 

[참고자료]

·         https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf#a-iddumpdira-change-the-default-dump-directory-location

·         https://www.mssqltips.com/sqlservertip/4768/how-to-change-the-default-dump-file-location-of-sql-server-running-on-linux-server/

 

 

2017-07-11 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 dump file 위치 변경, SQL Linux  dump file, SQL 2017, mssql-conf, Change SQL Server dump file location, filelocation.defaultdumpdir

'SQL Server > SQL on Linux' 카테고리의 다른 글

Linux에서 Network I/O 확인  (0) 2017.09.13
SQL Linux에서traceflag 활성화  (0) 2017.09.13
SQL Linux에서 Port 변경  (0) 2017.09.13
Linux에서 DISK 공간 확인  (0) 2017.09.13
SQL Linux에서collation 변경  (0) 2017.09.13

SQL Linux에서 Port 변경

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서Port  변경하는 방법에 대해서 알아본다. SQL Linux 경우도 기본적으로 1433 포트를 사용하고 있다. 보안 또는 다른 이슈로 포트 번호를 변경해야 하는 이슈가 있을때  /opt/mssql/bin 폴더에 있는 mssql-conf 스크립트 내용을 변경하여 Port 변경할 있다.

 

SQL Linux 접속하여 root 권한을 획득 한다. 많은 사람들이 이미 기본포트가 1433인것을 알고 있지만 실제 사용하는 포트를 확인하기 위해 netstat 명령을 사용하여 서버에서 실행중인 모든 연결을 확인한다.

sudo su

 

netstat -tulpn

 

기본적으로SQL Server 포트는 1433이며, 1434 SQL Server Browser 서비스에 사용된다. 이번 실습에서는 SQL Server포트를 1435 변경하도록 한다. 아래 스크립트를 실행하여 포트 번호를 변경한다.

sudo /opt/mssql/bin/mssql-conf set network.tcpport 1435

 

 

포트 변경이 완료되면 SQL Server 재시작을 해야한다. SQL  서비스 재시작이 완료되었으면  다시한번 netstat –tulpn 실행하여 SQL Server 사용중인 포트를 확인한다.

 

SQL Server 1435 포트를 사용하는것을 확인할 있다. 실제 1435 포트를 이용하여 SQL Server 연결할 있는지 확인한다.

 

[참고자료]

·         https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf#a-idtcpporta-change-the-tcp-port

·         https://www.mssqltips.com/sqlservertip/4736/how-to-change-sql-server-port-number-for-a-linux-server/

 

2017-07-10 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 port 변경, SQL Linux  port, SQL 2017, mssql-conf, Change SQL Server port number, network.tcpport

Linux에서 DISK 공간 확인

 

·         Version : ubuntu

 

SQL Server Linux 버전 출시로 MS SQL DBA분들이 Linux 대한 관심이 많이 높아졌다. 이번 팁에서는 Linux에서 SQL Server 사용할때 알아두면 좋은 리눅스 팁을 공유한다. 이번 포스트는 Linux에서 디스크 공간을 확인하는 방법이다.

 

Linux에서 DISK 공간을 확인하기 위한 가장 기본 적인 방법은 ls 명령을 사용하는 것이다.  ls  명령은 Windows dir /w 실행할 때와 같이 파일 크기 정보 없이 아카이브 정보만 반환 한다. 옵션인 -l(소문자 L) 함께 실행하면 파일 전체의 목록을 확인할 있다.

ls -l

 


 

출력된 결과의 항목은 파일에 대한 정보를 표시 한다.


 

정보를 보면 파일 크기가 바이트 단위로 표시되어 파일의 경우 가독성이 불편하다. h 인수 ls 명령과 함계 사용하면 메가바이트 단위로 공간을 표시 한다.

ls -lh

 


 

 

 

 

df명령은 사용된 디스크 공간과 파일 시스템의 마운트 지점을 표시 한다. df 자세한 옵션은 df 메뉴얼(https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html) 참고 한다.

df

 


 

df -h

 


 

아래 명령은 df 다양한 인수를 추가하여 특정 디렉토리의 파일 크기를 확인한다.

df –h /var/opt/mssql/data/master.mdf

 


 

du명령은 주어진 디렉토리 트리와 하위 폴더 파일 크기를 표시한다. 명령을 사용하기 위해서는 해당 디렉토리 파일에 대해 읽기 권한이 필요하다. 따라서 파일 크기만 알고 싶다면 ls –l 명령을 사용하는것이 좋다.

du /lib/udev

de –h /lib/udev

 


 

Sort 인자를 추가해서 파일크기에 대해서 정렬해서 있다.

de –h /lib/udev | sort -h

 


 

 

 

 

 

2017-06-20 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux disk, 리눅스에서 DISK  공간 확인, SQL 2017, check disk usage on Linux, ls, df, du, disk space


SQL Linux에서collation 변경

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서collation  변경하는 방법에 대해서 알아본다. Collation 문자열 정렬 비교 방법에 대한 규칙을 지정하는데 사용된다. Collation 다르면 쿼리의 동작이나 달라지거나 조인을 사용할때 일부 문제가 발생할 있다자세한 내용은 아래 포스트를 참고 한다.

·         Collation 따른 실행계획 변경과 성능 문제 : http://sqlmvp.kr/140199553043

·         Collation 따른 ALTER DATABASE 실패 : http://sqlmvp.kr/140194406833

·         Collation 따른 DMV 실행 오류 : http://sqlmvp.kr/140185365035

·         Collation 변경 (Windows SQL) : http://sqlmvp.kr/140211882558

 

Linux에서 SQL Server 설치 할때 collation 선택하는 옵션이 없으면 기본값을 사용하여 설치 된다. 아래 명령을 사용하여 현재 SQL Server 인스턴스 collation 확인한다.

select convert(varchar, SERVERPROPERTY(‘collation’))

 

 

SQL Server collation SQL_Latin1_General_CP1_CI_AS 임을 있다. 이번 포스트에서는 Korean_Wansung_CI_AS 변경하는 방버에 대해서 알아본다.

 

우선 가장 먼저 SQL Server 중지한다. 아래 명령을 사용하면 SQL Server 중지 있다.

Sudo systemctl stop mssql-server

 

mssql-conf 사용하여 SQL Server collation 변경한다. Set-collation 옵션이 데이터 정렬을 변경하는 명령어이다. 아래 명령을 실행하여 collationKorean_Wansung_CI_AS 변경한다.

sudo /opt/mssql/bin/mssql-conf set-collation

 

명령을 실행하면 Collation 변경 입력 프롬프트가 나타나고 사용자에 따라 필요한 collation 입력한다. 변경이 완료되면 완료되었다는 메시지가 표시 된다.

 

변경이 완료 되었으면 서버를 시작하고 정상적으로 collation 변경되었는지 확인한다.

 

현재 사용자의 시스템에서 지원 가능한 collation 확인하는 방법은 아래 명령을 사용한다.

select name from sys.fn_helpcollations()

 

 

-NOTICE-

현재테스트 환경의 버전이 SQL Evalutation 버전이어서인지 collation 변경되었다는 메시지는 표시되지만 실제 변경이 되지 않았다. 문제는 버전문제인지 아직 확인되지 못하였다.

 

 

[참고자료]

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf#collation

https://www.mssqltips.com/sqlservertip/4763/how-to-change-sql-server-collation-on-linux/

http://slavasql.blogspot.com/2017/03/SSOL-set-collation.html

 

2017-07-05 / 강성욱 / http://sqlmvp.kr

 

SQL Linux, Linux SQL, 리눅스에서 collation 변경, SQL Linux  collation, SQL 2017, mssql-conf



SQL Linux에서 데이터 로그 파일의 기본 디렉토리 변경

 

·         Version : ubuntu, SQL Server Linux

 

SQL Server Linux에서 데이터 파일 로그 파일의 기본 디렉토리 위치를 변경하는 방법에 대해서 알아본다. Linux SQL Server 경우 msslq-conf  유틸리티의 스크립트에 의해 수행 된다.

 

아래 스크립트를 실행하여 데이터베이스의 현재 기본 위치의 파일을 표시 한다. 모든 데이터베이스 파일이 /var/opt/mssql/data 위치하고 있음을 있다.

sudo su

 

ls –lrt /var/opt/mssql/data

 

 

임시로 새로운 데이터베이스를 생성하여 경로를 확인하여도 기본 폴더인 /var/opt/mssql/data 생성된 것을 확인 있다.

 

이제 데이터베이스 파일의 위치를 /var/opt/mssql/data에서  /opt/mssql/data  폴더로 바꾸어 새로운 데이터베이스를 만들때 마다 새로운 경로에 생성되록 한다. 우선 새로운 경로의 디렉토리를 생성한다.

mkdir /opt/mssql/data

 

/opt//mssql/data 디렉토리 생성이 완료 되었으면  SQL Server 디렉토리에 접근할 있도록 폴더의 소유자와 그룹을 변경한다.

sudo chown mssql /opt/mssql/data

sudo  chgrp /opt/mssql/data

 

이제 mssql-conf 사용하여 기본