SQLServer 53

날짜 참조 테이블 만들기

날짜 참조 테이블 만들기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 데이터를 검색 할 때 가장 많이 사용되는 조건 중 하나가 날짜 일 것이다. 다양한 통계 쿼리를 만들다 보면 날짜 범위에 관한 조건문이 많이 사용되는데 이때 해당 기간을 검색하기 위한 참조 테이블을 만들어 사용하면 편리하다. (흔히 날짜 차원 테이블이라고 부른다.) 날짜 참조 테이블을 생성한다. USE TEMPDB IF OBJECT_ID('dbo.#t') is not null DROP TABLE dbo.#t; CREATE TABLE #t ( [Date] datetime , [Year] smallint , [Quarter] tinyint , [Month] tinyint , [Day] smal..

인덱스 상세 정보 확인

인덱스 상세 정보 확인 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 테이블 또는 뷰의 인덱스에 관한 정보를 확인하기 위해서 sp_helpindex를 많이 사용한다. Sp_helpindex는 SQL Server 2005부터 지원하고 있다. use AdventureWorks2012 go exec sp_helpindex 'Sales.SalesOrderdetail' 열 이름 데이터 형식 설명 Index_name Sysname 인덱스 이름 Index_description Varchar(21) 인덱스가 있는 파일 그룹을 포함하는 인덱스 설명 Index_keys Nvarchar(2078) 인덱스가 만들어진 테이블 또는 뷰의 열 Sp_helpindex의 경우 기본 정보만..

SQL Server 2014 Diagnostic Information Queries

SQL Server 2014 Diagnostic Information Queries Version : SQL Server 2014 SQL Server 2014 진단 쿼리 – 이 쿼리 한방이면 SQL 상태 확인 가능. 첨부파일 SQL Server 2014 Diagnostic Information Queries.txt 참고. -- SQL Server 2014 Diagnostic Information Queries -- Glenn Berry -- December 2014 -- Last Modified: December 18, 2014 -- http://sqlserverperformance.wordpress.com/ -- http://sqlskills.com/blogs/glenn/ -- Twitter: Glen..

SQL Server 2008R2 Diagnostic Information Queries

SQL Server 2008R2 Diagnostic Information Queries Version : SQL Server 2008R2 SQL Server 2008R2 진단 쿼리 – 이 쿼리 한방이면 SQL 상태 확인 가능. 첨부파일 SQL Server 2008R2 Diagnostic Information Queries.txt 참고. -- SQL Server 2008 R2 Diagnostic Information Queries -- Glenn Berry -- December 2014 -- Last Modified: December 18, 2014 -- http://sqlserverperformance.wordpress.com/ -- http://sqlskills.com/blogs/glenn/ -- Tw..

SQL Server 2008R2 Diagnostic Information Queries

SQL Server 2008R2 Diagnostic Information Queries Version : SQL Server 2008R2 SQL Server 2008R2 진단 쿼리 – 이 쿼리 한방이면 SQL 상태 확인 가능. 첨부파일 SQL Server 2008R2 Diagnostic Information Queries.txt 참고. -- SQL Server 2008 R2 Diagnostic Information Queries -- Glenn Berry -- December 2014 -- Last Modified: December 18, 2014 -- http://sqlserverperformance.wordpress.com/ -- http://sqlskills.com/blogs/glenn/ -- Tw..

SQL Server 2005 Diagnostic Information Queries

SQL Server 2005 Diagnostic Information Queries Version : SQL Server 2005 SQL Server 2005 진단 쿼리 – 이 쿼리 한방이면 SQL 상태 확인 가능. 첨부파일 SQL Server 2005 Diagnostic Information Queries.txt 참고. -- SQL Server 2005 Diagnostic Information Queries -- Glenn Berry -- December 2014 -- Last Modified: December 18, 2014 -- http://sqlserverperformance.wordpress.com/ -- http://sqlskills.com/blogs/glenn/ -- Twitter: Glen..

601 Error, Could not continue scan with NOLOCK due to SQL Server data Movement

601 Error, Could not continue scan with NOLOCK due to SQL Server data Movement 메시지 601, 수준 12, 상태 3, 프로시저 usp_SQLMVP, 줄 23 데이터 이동으로 인해 NOLOCK으로 계속 검색할 수 없습니다. Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 데이터 조회 프로시저 호출에서 다음과 같이 601 에러가 발생 하였다. 601 에러는 어떨떄 발생 할까? 601에러는 READ UNCOMMITTED, NOLOCK 힌트를 사용하여 데이터를 조회 할 때 하나 이상의 데이터가 페이지가 없기 때문에 발생한다. 페이지 분할로 이동했거나 페이지가 삭제되었을 경우 발생 한다. 즉 SQL Serv..

데이터베이스의 모든 인덱스 생성 삭제 스크립트 만들기

데이터베이스의 모든 인덱스 생성 삭제 스크립트 만들기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 데이터베이스에 생성되어 있는 모든 인덱스를 생성하거나 삭제하는 스크립트를 만들어 본다. 이렇게 스크립트를 만들어 놓는 이유는 DBA로서 항상 복구할 준비를 할 수 있어야 하기 때문이다. 인덱스가 삭제되거나 손상되었을 때 또는 사본을 만들어야 할 때 유용하게 사용할 수 있다. [인덱스 삭제 스크립트] 데이터베이스에 있는 모든 인덱스를 삭제하는 스크립트를 생성한다. DECLARE @SchemaName VARCHAR(256)DECLARE @TableName VARCHAR(256) DECLARE @IndexName VARCHAR(256) DECLARE @TSQLDro..

SQL Server Spinlock 소개

SQL Server Spinlock 소개 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 Spinlock은 Latch처럼 공유 데이터 구조에 대한 접근 스레드가 동기화 스토리지 엔진에 의해 사용되는 경량의 동기화 객체이다. Latch가 발생할 경우 연관된 오버헤드가 발생하는데 바쁠 때는 래치의 데이터 구조를 보호하는 것은 의미가 없다. 이 때문에 SQL Server는 Spinlock를 구현한다. SQL Server IO and Latch 설명 : http://sqlmvp.kr/140199995476 Latch의 경우는 쿼리가 Latch를 획득하지 못하였을 경우에는 대기 상태로 대기하고 이후에 실행 가능한 상태로 이동한다. 쿼리는 CPU에서 실행된 상태가 아니기..

Ad-hoc 쿼리와 실행계획

Ad-hoc 쿼리와 실행계획 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 Ad-hoc 쿼리를 실행 할 때 대소문자, 띄어쓰기, 스키마에 따라 기존의 실행 계획이 사용되지 않고 새로운 실행 계획이 생성되어 사용된다. Ad-hoc 쿼리는 컴파일 과정을 거치며 실행 계획을 생성하며 컴파일과 실행 계획 생성에 따른 성능 병목이 발생 할 수 있다. [대소문자, 공백에 따른 실행계획 생성] Ad-hoc으로 쿼리를 사용 할 경우 Case와 공백에 따라서도 다른 쿼리로 인식되어 새로운 실행계획이 생성된다고 하였다. 다음 예제를 통해 알아보자. USE AdventureWorks2014; DBCC FREEPROCCACHE WITH NO_INFOMSGS; GO SELECT S..