SQL Server/SQL Server Tip 662

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

데이터베이스에서 사용자 삭제 오류 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 2016 자동 통계 업데이트 임계값 변경

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

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..

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 Version : SQL Server 2016, Azure SQL Server SQL Server 2016에서는 업데이트 스케줄링에 대한 알고리즘이 향상되었다. 기존에는 큰 CPU 퀀텀 작업자(Large CPU Quantum)와 작은 작업자(Short CPU Quantum) 사이에서 스케줄링에 의해 자원 액세스에 대한 불균형이 발생할 수 있었다. 이 테스트는 SQL Server 2012 및 2014에서 백분위(percentile) 스케줄링 기반의 알고리즘에서 발견되었다. 다음 예제를 보면 작업자1(W1)은 읽기 및 인메모리 데이터베이스 페이지의 미리 읽기 등의 큰 작업을 하고 작업자2(W2)는 짧은 작업을 한다. 예를 들어 작업자1은 버퍼풀에..

SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상

SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 Version : All Version SSMS(SQL Server Management Tool)에서 GUI를 사용하여 데이터베이스 속성을 확인하려고 할때, 다음과 같은 오류가 발생하는 경우가 있다. Cannot show requested dialog. Additional information: Cannot show requested dialog.(SqlMgmt) Property Owner is not available for Database'[XXXX]'. This property may not exist for this object, or may not be retrievable due to insufficient access ..

SQL Server 2016 Automatic Soft NUMA

SQL Server 2016 Automatic Soft NUMA Version : SQL Server 2016 각 프로세서 그룹에는 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있다. 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스 한다. 각 그룹을 NUMA 노드라 한다. 다른 NUMA 노드와 연결된 메모리보다 로컬 메모리를 액세스하는것이 훨씬 더 빠르다. NUMA 하드웨어에서는 일부 메모리 영역이 실제로 나머지 영역과 다른 버스에 있다. NUMA는 로컬 메모리와 외부메모리를 사용하므로 다른 영역에 비해 일부 메모리 영역에 액세스하는 시간이 오래 걸린다. NUMA 아키텍처 : http://sqlmvp.kr/140150873571 SQL Server 2016에서는 하드웨어 레이아웃..

NUMA Architecture

SQL Server DBA (SQL Server Technical Assistance Group) 작성일자(2012년, 01월, 28일) 문서등급(일반) 문서 정보문서 정보 NUMA 설정 가이드 연락처 SQLTAG (SQL Server Technical Assistance Group) http://www.sqltag.org 문서 히스토리 버전 일자이력사항 작성자승인자1.02012.01.28최초작성 강성욱 ..... 저작권 Copyright 2012 SQLTAG All Rights Reserved. SQLTAG는 이 문서의 내용을 예고 없이 변경할 수 있습니다. 목차 1. NUMA 5 1.1 NUMA(Non-Uniform Memory Access) 6 1.1.1 NUMA 와SQL Server버전 6 1.2..

SQLCMD 유틸리티 사용하기

SQLCMD 유틸리티 사용하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQLCMD 유틸리티를 사용하면 명령 프롬프트, SQLCMD 모드의 쿼리 편집기, Windows 스크립트파일 또는 SQL Server 에이전트 작업의 운영 체제(cmd.exe) 작업 단계에서 T-SQL 문, 시스템 프로시저 및 스크립트 파일을 입력 할 수 있다. SQLCMD는 OLE DB 공급자를 사용하고, SSMS는 .NET Framework SqlClient를 사용하므로 서로 다른 기본 옵션이 적용될 수 있으므로 동일한 쿼리를 실행하더라도 실행되는 툴에 따라 서로 다른 동작이 수행 될 수 있다. 기본 구문은 아래 표와 같다. sqlcmd [{ { -U login_id ..