SQL Server 818

SQL Server 2016 과 추적 플래그 –T8048

SQL Server 2016 과 추적 플래그 –T8048 Version : SQL Server 2016 SQL Server 2016 부터 도입된 Automatic soft NUMA에서 CMemThread partitioning의 다양한 변화로 인해 추적 플래그 –T8048이 필요 할까? Microsoft Document에 따르면 SQL Server 2014 SP2 및 SQL Server 2016이상에서는 –T8048이 영향을 주지 않는다고 한다.· Trace Flag : https://msdn.microsoft.com/en-us/library/ms188396.aspx SQL Server 2016이전에는 추적 플래그 –T8048은 NUMA의 분할된 CMemThread 개체를 CPU 파티션 기반 개체로 업그..

SQL Server가 논리 및 물리 프로세서를 결정하는 방법

SQL Server가 논리 및 물리 프로세서를 결정하는 방법 Version : SQL Server SQL Server는 하드웨어 레이아웃 정보를 바탕으로 NUMA 노드를 구성한다. SQL Server 2016 부터는 레이아웃 정보를 바탕으로 자동으로 NUMA 노드를 구성을 한다.· SQL Server 2016 Automatic Soft NUMA : http://sqlmvp.kr/220806805474그렇다면 SQL Server가 Native(bare metal) 또는 VM 환경과 같이 가상화 환경에서 구성된다면 어떻게 노드를 구성할까. 이 과정의 핵심은getlogicalprocessorinformation (windows API) API이며 논리적으로는 bare metal과 VM 기반이 동일하다. VM(..

데이터베이스에서 사용자 삭제 오류

데이터베이스에서 사용자 삭제 오류 Version : SQL Server SQL Server에서 사용자를 삭제할때 삭제하려는 사용자 계정이 특정 개체를 소유하거나 사용 권한을 가지고 있을때 다음과 같은 오류메시지와 함께 작업이 실패한다. Msg 15136, Level 16, State 1, Line 2 The database principal is set as the execution context of one or more procedures, functions, or event notifications and cannot be dropped. 이런 경우 특정 사용자 계정이 어떤 개체를 소유하거나 권한을 가지고 있는지 확인하여 해당 권한을 삭제한 후 계정을 삭제해야 한다. SQL Server에는 다양한 ..

SQL Server ODBC Driver 및 Command package Tool 설치

SQL Server ODBC Driver 및 Command package Tool 설치 Version : SQL Linux, Ubuntu 16.0.4 SQL Server on Linux Preview 버전이 발표되고 설치 방법에 대해서 알아 보았다. 이번 포스트에서는 SQL Server tool 설치 및 접속 방법에 대해서 살펴본다. Tool 설치 및 접속 방법에 대해서는 Microsoft 의 공식 문서를 참고 하였다. SQL Server Install on Linux (Ubuntu – 16.0.4) : http://sqlmvp.kr/220868450150 Install tools on Ubuntu : https://docs.microsoft.com/ko-kr/sql/linux/sql-server-lin..

SQL Server Install on Linux (Ubuntu – 16.0.4)

SQL Server Install on Linux (Ubuntu – 16.0.4) Version : SQL Linux, Ubuntu 16.0.4 SQL Server는 지금까지 Windows 환경에서만 운영이 가능하였다. 최근 Microsoft에서는 SQL Server Linux Preview 버전을 발표하였으며 Redhat, Ubuntu, Docker 버전을 배포하였다. (공식 문서에서는 없지만 CentOS 에서도 동작 한다고 한다.) Install SQL Server on Linux : https://docs.microsoft.com/ko-kr/sql/linux/sql-server-linux-setup 이번 포스트는 Ubuntu 환경에 SQL Server를 설치하는 방법에 대해서 다루어 본다. 먼저 U..

SQL Server 2016 자동 통계 업데이트 임계값 변경

SQL Server 2016 자동 통계 업데이트 임계값 변경 Version : SQL Server 2016 SQL Server 2016에서 자동 통계 업데이트를 위한 기본값이 변경되었다. 기존의 자동 통계 업데이트를 위한 기본 값은 테이블 전체 행의 약 20% 행 변경이 발생하였을때 통계 업데이트가 이루어진다. 예를 들면 1억 행이 있는 테이블의 경우 2천만 행이상 변경이 발생해야 통계 업데이트가 이루어진다. 대형 테이블의 경우 20%에 대한 행 변경이 매우 크기 때문에 기본적으로 잘 사용하지 않는다. 위와 같은 사유 때문에 Trace Flag 2371이 소개되었고 SQL Server 2008R2 SP1 이후 적용할 수 있다. 이 추적플래그는 테이블 행변화에 대한 비율을 극적으로 감소시켰다. 예를 들면 ..

SQL Azure blob storage 백업을 위한 프록시 세팅

SQL Azure blob storage 백업을 위한 프록시 세팅 Version : SQL Azure 기존의 로컬 저장소가 아닌 Azure blob storgae에 백업을 저장할때, 일부 시스템의 경우 보안상의 이유로 인터넷 접속이 차단되어 있는 경우가 있다. 이때 프록시 서버를 사용하여 Azure로 백업을 할 경우 backuptoURL.exe.config를 구성해야 한다. 아래 스크린샷은 프록시 서버를 구성하는 방법이다. 프록시 서버를 사용하여 인터넷에 액세스 할 경우 프록시 서버에는 분당 연결 수를 제한하는 설정이 있을 수 있다. URL에 대한 백업 프로세스는 다중 스레드 프로세스이므로 이 제한을 초과할 경우 프록시는 연결을 해제할 수 있다. 이 문제를 해결하기 위해서는 SQL Server에서 프록시..

Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환

Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 Version : SQL Server 2008, 2008 R2, 2012, 2014, 2016 SQL Server에서 쿼리 계획을 확인하기 위한 방법에는 DMV를 사용하는 방법이 있다. Sys.dm_exec_query_plan DMV는 XML 형태의 실행 계획을 반환한다. 플랜 핸들로 지정된 계획은 캐시되거나 현재 실행 중일 수 있다. 이 DMV는 아래와 같은 정보를 반환한다. 컬럼명 데이터 형식 설명 dbid smallint 컴파일 당시 데이터베이스 ID. (NULL허용) Objectid Int 저장 프로시저나 사용자 정의 함수와 같은 개체 ID. ad-hoc 및 prepared 일괄처리의 경우 NULL 반환. ..

SQL Server 2016 Multiple Log Writer Workers

SQL Server 2016 Multiple Log Writer Workers Version : SQL Server 2016 SQL Server 2016에서 소개된 multiple log writer 작업은 최대 4개의 작업자가 로그 쓰기를 가능하도록 확장되었다. 즉 LDF 쓰기 성능이 개선되었다. 수년동안 로그장치는 미디어의 스핀들 및 하드웨어 캐시의 능력에 의해 제한이 있었다. 최근 하드웨어의 발전과 SSD, Flash유형의 스토리지의 성능 발전으로 기존의 로그쓰기를 더 많이 수용할 수 있게 되었다. SQL Server 2016에서는 아래 명령을 사용하여 SQL 서버에서 현재의 로그 쓰기 작업자 수를 확인할 수 있다. select session_id, status, command, scheduler_..

SQL Server 2016 Larger Data File Writes

SQL Server 2016 Larger Data File Writes Version : SQL Server 2016 SQL Server의 WriteFileGather는 대량의 데이터파일 쓰기 요청에 사용된다. 이 로직은 더티페이지를 싱글 I/O 요청에 통합하는 것이다. 예를 들어 페이지 1:13과 1:12는 더티페이지로 하나의 WriteFileGather 작업에 통합한다. SQL Server 2012 and 2014에서연속 블록을 만들려면 32페이지또는 그 이상 더이페이지에 대해 해시룩업(Hash lookups)을 수행한다. Is Page 1:14 in memory (hashed) and dirty NO – End forward search for near pages Is Page 1:12 in mem..