ms sql 50

확장이벤트 사용시 주의사항

확장이벤트 사용시 주의사항 Version : SQL Server 2012, 2014, 2016 SQL Serve Extended Event (xevent, 확장이벤트)는 다양한 이슈 및 성능을 해결하기 위한 매우 좋은 도구이다. 하지만 확장이벤트는 사용방법에 따라 오버헤드가 발생하기 때문에 주의하여야 한다. 아래 사례는 Microsoft CSS SQL Server Engineers 공식 블로그에 게시된 내용으로 고객 사례를 바탕으로 주의점을 설명하였다. 자세한 내용은 원문을 참고 한다. Not every extended event is suited for all situations : https://blogs.msdn.microsoft.com/psssql/2016/02/24/not-every-extend..

SQL Server 2016 DBCC CHECK 작업 성능 향상

SQL Server 2016 DBCC CHECK 작업 성능 향상 Version : SQL Server 2016 대부분의 SQL Server (MULTI_OBJECT_SCANNER* base) 환경에서 DBCC CHECKS* (checkdb, checktable,…) 검사를 실행하는 동안 대기(wait)를 경험하게 된다. 내부적으로 DBCC CHECKS*를 실행하면 페이지 스캔 코디네이터 디자인(MultiObjectScanner)을 사용한다. SQL Server 2016 버전부터는 DBCC 작업시 이전보다 훨씬 더 확장 할 수 있도록 내부설계를 인모메리 최적화(Hekaton) 객체에 사용되는 것과 유사한 락(lock) 디자인을 적용하여 작업 성능을 향상 시켰다. 다음 차트는 동일한 1TB 데이터베이스의 테..

Query Rule Off를 사용한 SQL Server 옵티마이저 비활성화

Query Rule Off를 사용한 SQL Server 옵티마이저 비활성화 Version : SQL Server 2012, 2014, 2016 SQL Server는 쿼리를 실행 할 때 다양한 비용을 계산하여 최적의 계획을 생성하고 사용한다. 여러 사용 가능한 실행 계획 중에 비용이 가장 적게 드는 하나의 실행 계획을 선택하는 프로세스를 최적화라 한다. 쿼리 처리에 대한 아키텍처는 아래 링크를 참고 한다. SQL Server 쿼리 처리 아키텍처 : http://sqlmvp.kr/140188321707 SQL Server에서 쿼리를 실행 할 때 옵티마이저가 최적의 실행 계획을 만들어 사용할 수도 있지만 쿼리를 튜닝하는 과정에서 옵티마이저의 최적화를 사용하지 않도록 비활성화 할 수 있다. 문서화 되지 않은 Q..

시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기

시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 관리자 권한이 없는 계정을 사용하는 특정 어플리케이션이 실행될 때 예약된 추적 플래그를 실행하는 방법에 대해서 알아본다. 유사한 케이스로 프로파일러 사용법도 있다. 비관리자 계정으로 프로파일러 사용하기 : http://sqlmvp.kr/220322107960 시나리오는 다음과 같다. 특정 시스템에 추적 플래그를 설정 해야 한다. 하지만 서버에 추적 플래그를 설정하게 되면 다른 어플리케이션에 영향이 있다. 따라서 해당 어플리케이션이 실행될 때 추적플래그를 실행하고 싶다. 그런데 해당 어플리케이션을 사용하는 계정은 관리자 권한이 없다..

함수 통계 정보 확인 (sys.dm_exec_function_stats)

함수 통계 정보 확인 (sys.dm_exec_function_stats) Version : SQL Server 2016 SQL Server에서 쿼리를 사용할 때 함수를 사용하는 경우가 있다. 함수를 사용할 때 함수에 대한 성능을 확인하기 위해서 일반적으로 함수의 개별문을 실행하였다. 이번 포스트에서는 SQL Server 2016에서 새롭게 제공된 sys.dm_exec_function_stats DMV를 사용하여 함수에 대한 통계 정보를 확인해 본다. sys.dm_exec_function_stats는 모든 스칼라 함수 및 인메모리, CLR 스칼라 함수에 대한 통계 정보를 제공한다. 이 기능은 모든 스칼라 함수에 대한 캐시된 실행 계획을 반환한다. 인모메리 기능의 통계를 볼 때 논리적 물리적 IO에대한 칼럼..

통계정보와 실제 데이터 분포 확인하기

통계정보와 실제 데이터 분포 확인하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 통계(Statistics)는 검색 조건이 주어질 때 해당 컬럼으로 구성되는 인덱스를 사용할지 여부를 옵티마이저가 판단의 근거로 활용되는 자료이다. 통계는 데이터가 있는 컬럼에 대해 인덱스가 만들어질 때 이 컬럼 값의 히스토그램 및 관련정보를 이용하여 만들어진다. 통계 : http://sqlmvp.kr/140165557766 통계의 경우 데이터가 변경됨에 따라 그 정보도 업데이트되는데 일정 비율이상 데이터가 변경될 업데이트 된다. 간혹 특정 시점에서 쿼리가 느린 경우가 발생하는데 통계정보와 실제 데이터의 분포가 다를 경우 옵티마이저가 잘못된 판단을 하여 최적화된 플랜..

SQL Server Failover Cluster 설치시 네트워크 이름으로 인한 설치 오류

SQL Server Failover Cluster 설치시 네트워크 이름으로 인한 설치 오류 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQL Server Failover Cluster 인스터스를 설치할 때 발생하는 일반적인 오류에 대해서 다루어본다. SQL Server를 설치할 때 설치시 인스턴스 구성페이지에서 아래와 같은 오류 메시지를 쉽게 볼 수 있다. 설치 과정에서 SQL Server 네트워크 이름 및 인스턴스 이름을 입력 후 클릭하였을 때 이 시점에서 설치 프로그램이 몇 가지 유효성을 수행한다. 그 검증이 실패할 경우 화면 하단에 오류 메시지를 확인할 수 있다. 오류 메시지를 클릭하면 메시지에 포함된 몇 가지 추가 정보를 볼 수 있다. ..

SSIS 실행 로그 남기기

SSIS 실행 로그 남기기 Version : SSIS Server 2005, 2008, 2008R2, 2012, 2014, 2015 SSIS 패키지를 운영할 때 중요한 요소 중 하나는 로깅이다. SSIS에서는 다양한 로깅 방법을 지원한다. 텍스트 파일 – 가장 기본적인 로깅 SQL Server 테이블 – 가장 큰 장점은 쉽게 로그 결과를 조회할 수 있다. SQL Server 프로파일러 – 이벤트 프로파일 캡처할 수 있다. 추적에 기록된다. Windows 이벤트 로그 XML 파일 [SQL Server 테이블에 로깅] SQL Server 테이블에 로깅하는 방법에 대해서 알아본다. (다른 옵션들을 선택해도 설정 방법은 유사하기 때문에 응용하여 사용할 수 있다.) 로깅을 테스트하기 위해 SSIS 제어흐름에서 S..

SSRS 2016 향상된 구독(Subscription) 기능

SSRS 2016 향상된 구독(Subscription) 기능 Version : SSRS 2016 SQL Server 2016 Reporting Service에서 몇 가지 향상된 기능이 추가 되었다. 그 중 구독(Subscription) 기능에 대해서 향상된 부분을 알아본다. [구독의 활성 및 비활성] SSRS를 운용할 때 일시적으로 특정 레포트의 구독을 중지 해야하는 경우가 발생한다. SSRS 2016에서는 다음과 같이 구독을 선택하고 활성 및 비활성 할 수 있다. 구독을 선택하고 비활성화 할 경우 Status 항목에 Disabled 라고 표시되며 녹색 동그라미 부분이 비활성 상태로 표시 된다. 구독을 활성활 할 경우 Status는 Ready 상태로 표시된다. [구독 소유자 변경] SSRS 2016에서 ..

테이블 외래키 트리 확인 및 데이터 삭제하기

테이블 외래키 트리 확인 및 데이터 삭제하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQL Server에서 데이터 무결성을 유지하기 위해 생성한 외래키 제약조건이 있는 경우 데이터를 삭제 할 때 제약 조건에 위배되지 않도록 순차적으로 작업을 해야 한다. 테이블에 생성되어있는 외래키 연결에 대해 트리 구조로 살펴보고 순차적으로 데이터를 삭제할 수 있는 방법에 대해서 알아본다. 실습을 위해 테이블을 생성한다. 스크립트를 실행 하면 그림과 같은 외래키로 구성된 테이블이 생성된다. -- sample tables with FKs create table dbo.M (id int primary key, M_c1 int not null, M_c2 date..