SQLServer 53

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의 개체 탐색기에서 [서버] –[마우스 오른쪽 클릭] –[작업모니터]를 선택한다. 프로세스 탭을 클릭하면 페이지가 확장되고 현재..

인덱스 리빌드 동작 (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..

데이터베이스 연결 정보 수집

데이터베이스 연결 정보 수집 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 데이터베이스는 여러 응용프로그램에서 연결하여 사용한다. 문제는 이러한 응용프로그램이 제대로 연결을 종료하지 않을 때 발생 한다. 커넥션이 연결된 채로 종료 되지 않으면 다른 응용프로그램에서 커넥션을 할당하지 못하는 문제가 발생한다. 연결 개수를 모니터링 하여 어느 응용프로그램에서 연결을 많이 사용하는지 알아보자. 연결 개수를 모니터링 하기 위한 스크립트는 다음과 같다. SELECT [host_name], [program_name], login_name, count(c.session_id ) num_sessions, getdate() FROM sys.dm_exec_connect..

FileStream Garbage Collection

FileStream Garbage Collection Version : SQL Server 2012 SQL Server는 FILESTREAM 가비지 수집기를 실행하여 불필요한 FILESTREAM 파일을 삭제 한다. 가비지 수집기를 사용하여 FILESTREAM 컨테이너 안의 삭제된 파일을 모두 정리해야 해당 컨테이너를 제거할 수 있다. FILESTREAM 가비지 수집기는 자동으로 실행 된다. 그러나 가비지 수집기가 실행되기 전에 컨테이너를 제거할 경우 sp_filestream_force_garbage_collection을 사용하여 가비지 수집기를 수동으로 실행 할 수 있다. 컨테이너 지정 안 할 경우 USE FSDB; GO EXEC sp_filestream_force_garbage_collection @d..