SQL Server/SQL Server Tip 662

재해복구를 위한 SQL Server 역할 가져오기

재해복구를 위한 SQL Server 역할 가져오기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server를 다른 서버로 이전하거나 DR에 의해서 다른 사이트로 이동 될 때 반드시 챙겨야 하는 부분이 로그인 계정과 서버 역할이다. 서버 역할을 복구할 수 있는 스크립트를 만들어서 언제든지 서버 역할을 복원 할 수 있는 방법에 대해서 알아 본다. 서버 역할에 대한 정보를 확인 하기 위해서는 다음 두 개의 보안카탈로그 뷰를 사용할 수 있다. sys.server_principals : 로그인의 이름, 시스템 로그인 및 고정 서버 역할을 확인 sys.server_role_members : 서버 역할 멤버 자격 및 고정 서버 역할 멤버의 principal_id..

비관리자 계정에 Profiler 실행 권한 부여하기

비관리자 계정에 Profiler 실행 권한 부여하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server Profiler는 추적을 작성 및 관리하고 추적 결과를 분석하거나 특정 단계를 재생 할 수 있다. SQL Server Profiler : https://msdn.microsoft.com/ko-kr/library/ms181091.aspx SQL Server Profiler를 사용하기 위해서는 ALTER TRACE 권한이 필요하다. 권한이 없을 때에는 다음과 같은 오류가 발생 한다. 실습을 통해서 ALTER TRACE 권한을 부여하는 방법에 대해서 알아본다. 우선 권한이 없는 일반 사용자 계정을 생성한다. USE Master; GO CREATE ..

SQL Server Agent 공유 일정 생성하기

SQL Server Agent 공유 일정 생성하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server Agent에서 Job을 등록하고 Job이 실행될 일정을 등록한다. 이때 여러 job에서 같은 시간에 반복되는 일정이 있더라도 매번 일정을 등록해 주어야 한다. 공유된 일정을 만들어서 해당 일정을 여러 Job에서 가져다 쓸 수 있으면 얼마나 편리할까? 이번 포스트는 SQL Server Agent의 공유 일정 사용법에 대해서 알아 본다. SSMS에서 [SQL Server Agent] – [Job]에서 마우스 오른쪽을 클릭하여 [일정 관리]를 선택 한다. 일정 관리를 클릭하면 현재 등록된 모든 일정에 대해서 확인 할 수 있다. 사용자가 등록한 일정 ..

인덱스 리빌드는 통계를 업데이트 할까?

인덱스 리빌드는 통계를 업데이트 할까? Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 인덱스를 리빌드하면 통계가 업데이트 될까? 이 질문에 많은 사람들은 "YES"라고 답할 것이다. 사실은 모든 통계를 업데이트를 하지 않는다. 인덱스를 리빌드 하는경우 해당 인덱스와 관련된 통계만 업데이트 된다. Index Stats Non-index stats ALTER INDEX REORG NO NO ALTER INDEX REBUILD 해당 인덱스와 관련된 인덱스 통계 업데이트 됨 NO ALTER INDEX ALL REBUILD 모든 인덱스 통계 업데이트 됨 NO DBREINDEX (old syntax) YES YES 위에서 볼 수 있듯이 모든 통계는 인덱스 리빌드 작업을..

인덱스 유지관리 작업과 SQL Server 쿼리 성능

인덱스 유지관리 작업과 SQL Server 쿼리 성능 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server 데이터베이스 엔진에서는 기본 데이터에 삽입, 업데이트 또는 삭제 작업을 수행할 때마다 인덱스를 자동으로 유지 관리한다. 이러한 수정이 거듭되면 시간이 흐름에 따라 인덱스의 정보가 조각화되어 데이터베이스 내에 흩어지게 될 수 있다. 조각화는 키 값을 기준으로 하는 인덱스의 논리적 페이지 순서가 데이터 파일 내의 물리적 순서와 일치하지 않을 때 나타난다. 심하게 조각화된 인덱스는 쿼리 성능을 저하시키고 응용 프로그램의 응답이 느릴 수 있다. 인덱스 조각화가 심할 경우에는 Reorganization 또는 Rebuild에 대한 고민을 하게 되는데 ..

네트워크 드라이브에 데이터베이스 복원하기

네트워크 드라이브에 데이터베이스 복원하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server에서 데이터베이스 복원작업을 진행 할 때 SSMS를 사용할 경우 로컬 드라이브만 표시 된다. 원격지의 네트워크 드라이브에 데이터베이스를 복원할 때 드라이브 목록에 네트워크 드라이브를 추가할 수 있는 방법에 대해서 알아 본다. 데이터베이스를 복원할 때 로컬의 드라이브만 표시 된다. 네트워크 드라이브를 추가 하기 위해 Windows에서 네트워크 드라이브를 매핑해야 한다. 네트워크 드라이브 매핑이 완료 되었으면 SQL Server에서 해당 네트워크 드라이브를 식별하기 위해 xp_cmdshell 명령을 사용해야 한다. Xp_cmdshell은 기본적으로 비활성화 ..

확장 저장 프로시저를 활용한 논리디스크 용량 확인

확장 저장 프로시저를 활용한 논리디스크 용량 확인 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 DBA의 업무에서 중요한 작업 중 하나인 디스크 공간을 확인 하는 부분이다. 디스크의 총 용량, 사용 가능한 공간, 논리 드라이브의 정보 등을 확인하여 예기치 못한 장애에 대응할 수 있도록 해야 한다. 각 디스크 드라이브의 여유 공간을 확인하는 방법은 다양 하다. 윈도우 탐색기를 이용하여 파일 시스템 유형, 총 용량, 여유 가능한 공간 등을 확인 할 수 있다. 또 다른 방법으로는 확장 저장 프로시저 xp_fixeddrives을 사용하여 SQL Serve에서 직접 드라이브의 여유 공간을 확인 할 수 있다. 확장 저장 프로시저를 활용하여 논리 디스크의 정보를 확인하는..

날짜 참조 테이블 만들기

날짜 참조 테이블 만들기 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의 경우 기본 정보만..

DTC Transacntion 오버헤드

DTC Transacntion 오버헤드 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 BEGIN DISTRIBUTED TRANSACTION은 분산 트랜잭션을 시작하도록 한다. SQL Server 데이터베이스 엔진 인스턴스는 트랜잭션 주관자로서 트랜잭션의 수행을 제어한다. 이후 세션에 대해 COMMIT TRANSACTON 또는 ROLLBACK TRANSACNTION 문을 실행하면 제어 인스턴스는 포함된 모든 인스턴스 간의 분산 트랜잭션 완료를 MS DTC에서 관리하도록 요청 한다. 일반적으로 많은 부분에서 DTC를 사용한다. 하지만 필요하지 않는 부분에서는 사용하지 않는 것이 가급적 오버헤드를 줄 일 수 있다. DTC는 single phase 또는 two ph..