SQL Server/SQL Server Tip 662

잘못된 개체를 참조하는 SQL Server 개체 찾기

잘못된 개체를 참조하는 SQL Server 개체 찾기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server에서 개발을 하다 보면 수 많은 프로시저를 사용하게 되는데 스키마 변경이 발생 하였을 때 프로시저에서 유효성이 일치하지 않는 객체를 식별하는 방법에 대해서 알아본다. SQL Server에서는 sys.sp_refreshsqlmodule을 제공하여 종속성에 대한 유효성을 확인한다. sys.sp_refreshsqlmodule는 현재 데이터베이스에서 지정된 비스키마 바운드 저장 프로시저, 사용자 정의 함수, 뷰, DML 트리거, 데이터베이스 수준 DDL 트리거 또는 서버 수준 DDL 트리거에 대한 메타데이터를 업데이트 한다. 기본 개체가 변경되면 매..

전체 백업에서 포함되는 트랜잭션 범위

전체 백업에서 포함되는 트랜잭션 범위 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server 전체 백업을 진행 할 때 마지막 포함된 트랜잭션 범위에 대해서 알아보자. 백업작업 시 체크포인트를 실행하여 버퍼풀에 있는 모든 더티 페이지를 강제로 디스크에 기록한다. 백업 작업은 데이터베이스에 할당된 페이지를 읽기 시작한다. 백업 작업이 페이지 X를 읽는다. 트랜잭션 A가 발생 한다. 트랜잭션 A가 페이지 X를 변경한다. 트랜잭션 B가 발생 한다. 트랜잭션 A가 끝나고 페이지 X에 대한 변경사항을 커밋한다. 백업 데이터 읽기 작업이 완료되고 트랜잭션 로그를 읽기 시작한다. 백업 데이터 읽기 작업이 완료된 시점에 트랜잭션 A에 대한 내용은 트랜잭션로그에 커..

REPL_SCHEMA_ACCESS 대기 유형

REPL_SCHEMA_ACCESS 대기 유형 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server의 고가용성 솔루션인 복제 구성에서 트랜잭션 복제 지연 문제가 발생 할 때 나타나는 대기와 이를 해결 할 수 있는 방법에 대해서 알아본다. 이 포스트는 CSS SQL Server Engineers 팀 블로그의 내용을 읽고 이해한 것을 정리하였으며 번역의 오류나 기술적 오류 가능성이 있으므로 자세한 내용은 원문을 참고한다. DMV를 사용하여 현재 실행 중인 각 요청에 대한 정보를 확인 한다. REPL_SCHEMA_ACCESS 대기를 확인 할 수 있다. select * from sys.dm_exec_requests REPL_SCHEMA_ACCESS 대기는..

Database 손상시 Emergency 모드로 복구하기

Database 손상시 Emergency 모드로 복구하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server에서 데이터베이스가 손상되었을 때 조치할 수 있는 방법에 대해서 알아본다. 데이터베이스가 손상되었을 때 유일하게 접속할 수 있는 방법은 Emergency 모드이다. 시나리오는 다음과 같다. Emergency 모드로 데이터베이스에 접근 한다. 새로운 트랜잭션로그를 구축하기 위해 문서화 되지 않은 DBCC REBUILD_LOG 명령을 사용한다. 데이터 파일에 대한 손상을 해결하기 위해 REPAIR_ALLOW_DATA_LOSS 옵션으로 DBCC CHECKDB를 실행 한다. 데이터복구가 완료되면 백업을 진행하고 Emergency 모드를 해제 한다..

서버 그룹을 이용한 다중서버 쿼리하기

서버 그룹을 이용한 다중서버 쿼리하기 Version : SQL Server 2008, 2008R2, 2012, 2014 여러 SQL Server에 동일한 쿼리를 실행하는 경우가 있다. 관리하는 서버 수가 적다면 직접 서버에 접속하여 하나씩 실행해도 되지만 관리하는 서버가 많다면 하나씩 실행하는 것은 많은 리소스가 소모되는 일이다. SQL Server 2008부터는 중앙관리 서버 기능을 사용하여 서버그룹에 등록되어있는 서버에 대해서는 다중 서버 쿼리가 가능하다. 다중 서버 쿼리를 사용하기 위해서는 우선 서버 그룹에 서버를 등록해야 한다. 등록된 서버를 보기 위해서는 메뉴에서 [보기] [등록된 서버]를 실행 한다. [등록된 서버]에서 로컬 서버 그룹에서 마우스 오른쪽 버튼을 클릭하여 [새 서버 그룹]을 생성..

SQL Server Agent에서 CmdExec 오류

SQL Server Agent에서 CmdExec 오류 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server 마이그레이션 후 CmdExec 실행 시 다음과 같은 오류가 발생한다면 각 하위 시스템에해당하는 파일이 지정된 경로에 있는지 확인해 볼 필요가 있다. Unable to start execution of step 1 (reason: The CmdExec subsystem failed to load [see the SQLAGENT.OUT file for details]; The job has been suspended). The step failed. 하위 시스템 경로에 dll 파일이 존재하지 않으면 다음과 같은 에러를 확인 할 수 있다. 하위 ..

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