분류 전체보기 1383

Verbose SQL Server Agent Logging

Verbose SQL Server Agent Logging Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server Agent 실행 결과를 출력파일로 저장하여 상세한 로그를 확인하는 방법에 대해서 알아본다. SSMS에서 [SQL Server 에이전트] – [작업] 에서 Verbose 로그를 남길 작업을 선택하여 속성을 실행한다. 작업 속성의 [단계] 탭에서 [고급]을 선택 한다. [출력 파일] 항목에 로그 파일을 기록할 경로를 입력 한다. 로그 기록을 동일한 파일에 덧붙여 기록하려면 [기존 파일에 출력 추가]를 선택 한다. (선택 해제 시 최근 기록으로 덮어씀) Verbose 로그를 확인 하기 위해 예제로 백업을 실행해 보았다. 지정한 경로에 로그 ..

Windows Event Log에 SQL Server Agent Log 기록

Windows Event Log에 SQL Server Agent Log 기록 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server Agent는 기본적으로 알림이 활성화 되어 있지 않다. SSMS에서 작업을 생성할 때 알림 탭으로 이동하면 알림을 활성화 할 수 있는 옵션을 확인 할 수 있다. 알림 옵션에는 이메일을. 호출, 메시지 호출, 윈도우 이벤트 로그, 작업삭제가 있다. 작업 관리를 위해 효율적인 방법은 작업의 실패의 경우 윈도우이벤트로그의 응용프로그램 이벤트 로그에 정보를 기록 하는 것이다. 다음 예제는 작업이 실패 할 경우 윈도우 이벤트의 응용프로그램 이벤트 로그에 로그를 기록하는 구성방법이다. 스크립트를 실행하면 현재 인스턴스에 정의된 ..

SQL Server Agent Error log 위치 변경

SQL Server Agent Error log 위치 변경 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server 에이전트는 특정 이벤트를 캡처하여 로그파일로 기록한다. 기본적으로 이 파일의 위치는 SQL Server가 설치된 로그 폴더에 있다. 이번 포스트는 SQL Server Agent의 로그 파일의 폴더를 변경해 본다. 첫 번째로 기존의 에이전트 로그 파일 위치를 확인하다. 아래 스크립트를 실행하면 로그 파일의 경로를 확인 할 수 있으며 저장프로시저의 위치는 MSDB에 있다. EXEC msdb..sp_get_sqlagent_properties GO 다음 스크립트는 로그 파일의 경로를 변경 한다. 이때 해당 경로에 폴더가 미리 생성되어 있어야 ..

SQL Server에서 차단을 확인하는 다양한 방법

SQL Server에서 차단을 확인하는 다양한 방법 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 많은 수의 동시 사용자 요청을 처리한다. 수 많은 클라이언트가 요청을 하면 여러 프로세스가 동일한 자원에 대해 동시에 액세스하기 때문에 충돌이 발생 할 수 있다. 이때 차단이 발생하는데 SQL Server에서 발생하는 차단에 대해서 확인 하는 여러 가지 방법에 대해서 알아 본다. [SSMS 작업 모니터] SSMS에서 제공하는 작업 모니터는 SQL Server의 리소스 및 프로세스에 대한 잠금 정보를 확인 할 수 있다. SSMS의 개체 탐색기에서 [서버] –[마우스 오른쪽 클릭] –[작업모니터]를 선택한다. 프로세스 탭을 클릭하면 페이지가 확장되고 현재..

SQL Server CPU 사용률이 높은 프로세서 및 쿼리 찾기

SQL Server CPU 사용률이 높은 프로세서 및 쿼리 찾기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server에서 CPU사용률이 높게 나타났다. 어떤 프로세스가 어떤 쿼리를 실행하여 CPU 사용률이 높은지 SPID와 KPID를 사용하여 알아보자. [시작] – [실행] - [perfmon] 또는 성능 카운터를 실행한다. [Thread] 카운터 목록에서 [% Processor Time], [ID Thread]를 선택하고 인스턴스에 [sqlservr]를 선택 한다. 카운터를 추가하면 다음과 같이 스레드를 모니터링 할 수 있으며 이때 프로세서 값이 높은 스레드를 찾는다. 아래 그림에서는 스레드 1776이 CPU를 많이 사용하고 있는 것을 확인 할..

Collation 변경

Collation 변경 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server를 설치할 기본 데이터 정렬 구성은 Windows Server의 데이터 정렬을 참고 한다. 사용자 설정에 따라 기본 데이터 정렬을 변경 할 수도 있다. SQL Server 2014 설치 : http://sqlmvp.kr/140211418959 데이터베이스의 기본 데이터 정렬 설정에 따라 테이블을 생성할 때 문자열 타입의 경우 기본적으로 데이터베이스의 기본 데이터 정렬을 참고하여 생성된다. 이번 포스트는 테이블 컬럼에 Korean_Wansung_CI_AS 정렬에서 SQL_Latin1_General_CP1_CI_AS 정렬로 변경하는 방법에 대해서 알아 본다. 실습을 위해 문자..

인덱스 리빌드 동작 (Gather Streams from SORT)

인덱스 리빌드 동작 (Gather Streams from SORT) Version : SQL Server 2005, 2008, 2008R2, 2012, SQL2014 SQL Server에서는 인덱스 리빌드 작업을 통하여 조각난 인덱스를 다시 작성한다. SQL Server 데이터베이스 엔진에서는 기본 데이터에 삽입, 업데이트, 삭제 작업을 수행 할 때마다 인덱스를 자동으로 유지 관리한다. 이러한 수정이 빈번이 발생하면 시간이 흐름에 따라 인덱스의 정보가 조각화 되어 데이터베이스 내에 흩어지게 될 수 있다. 조각화는 인덱스의 논리적 페이지 순서가 데이터파일의 물리적 순서와 일치하지 않을 때 나타난다. 조각화가 심할 경우에는 쿼리의 성능이 저하될 수 있다. 이번 포스트는 CSS SQL Engineers에 게시..

최소한의 다운타임으로 데이터베이스 이동하기

최소한의 다운타임으로 데이터베이스 이동하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영하다보면 디스크의 공간 부족 또는 디스크의 성능 등으로 인하여 새로운 드라이브로 데이터베이스를 이동해야하는 상황이 발생 할 수 있다. 이때 대용량 데이터베이스를 최소한의 다운타임으로 이동하기 위한 여러가지 방법에 대해서 알아보자. 각 방법에는 장단점이 있다. [데이터베이스 분리 후 이동하여 연결하기] 데이터베이스를 이동 할 때 많이 사용하는 방법이다. 데이터베이스를 분리하여 데이터 파일을 이동한 다음 데이터베이스를 연결 하는 방법이다. exec sp_detach_db DBName File Move exec sp_attach_db DBName, Filepat..

백업 LSN 이해하기

백업 LSN 이해하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서는 전체 백업, 로그 백업, 차등 백업 등 다양한 백업을 지원한다. 백업을 진행 하면 각 백업에 대해 고유한 LSN(Log Sequence Number)이 생성된다. 백업 파일을 복원 할 때 LSN을 이용하여 복원하기 때문에 LSN에 대한 이해는 중요하다고 할 수 있다. 데이터베이스를 복원 할 때 데이터베이스 복원 시퀀스는 데이터베이스의 전체 백업에서 시작해야 한다. 차등 및 트랜잭션 로그 백업 파일에서 복원을 진행 할 수 없다. 데이터베이스를 복원할 때 4가지(FirstLSN, LastLSN, CheckpointLSN, DatabaseBackupLSN)의 중요한 LSN이 있다. ..

암호화 오버헤드 (작성자의 주관적인 자료임)

암호화 오버헤드 (작성자의 주관적인 자료임) Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 암호화된 컬럼을 복호화하는데 얼마나 많은 오버헤드가 증가할까? 16자리의 암호화된 카드번호를 복호화 과정을 통하여 발생하는 오버헤드를 측정해 보자. 실습을 위해 카드번호를 저장할 테이블을 생성한다. CREATE TABLE dbo.tblCustomerData ( CustomerID int identity(1,1) NOT NULL, CreditCardNumberPlainText varchar(16) NOT NULL, CreditCardNumberEncrypted varbinary(MAX) NULL ) 다음 포스트를 참고하여 열 수준 암호화를 진행 한다. htt..