전체 글 1383

SQL Server 인덱스 활성 / 비활성 하기

SQL Server 인덱스 활성 / 비활성 하기 Version : SQL Server 2005, 2008, 2008R2, 2012 데이터베이스를 운영하다 보면 수 많은 인덱스를 접하게 된다. 하지만 여기 있는 인덱스가 모두 사용 되는 것일까? 인덱스의 유용 여부를 파악하기란 쉽지 않다. 그렇다고 잘 쓰지 않을 것 같다고 생각되는 인덱스를 무심코 삭제 했다가는 정말 난감한 상황이 발생 한다. 만약 어떤 인덱스가 있을 때 이 인덱스의 유용 여부에 대해서 판단하고 싶을 때 어떻게 할까? SQL Server 2005 이상 버전에서는 테이블 또는 뷰에 대해서 인덱스를 활성 / 비활성 할 수 있다. 인덱스 사용을 비활성화 하면 인덱스를 사용하지 않아 인덱스에 따른 영향을 평가 할 수 있다. 우선 현재 인덱스를 살펴..

파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기

파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 하드웨어에 대한 리뷰를 쓴다는 것은 매우 어려운 일이다. 특히 벤치마크 테스트를 통한 성능을 측정한다는 것은 개인이 하기엔 거의 불가능 하리라 생각한다.(그래서 대부분 벤더의 공식 문서를 참고한다.) 따라서 이 글은 어떤 공식적인 문서나 테스트 방법을 포함하고 있지 않으며 지극히 나의 주관적인 생각을 정리한 것임을 밝혀 둔다. SQL Server에서 디스크는 가장 중요한 자원중의 하나이다. 특히 성능에 있어서 가장 영향을 많이 받는 부분이 디스크라 생각한다. (자원 중에 가장 느리다.) 우리는 여러 해 동안 서비스를 하면서 디스크에 대한 고민을 많이 해왔다. SQL Server의 성을 최대화 화기 위해 드라이브의 파티션 오프셋은 어떻게 설..

Disk Partition Alignment Best Practices Whitepaper for SQL Server

Disk Partition Alignment Best Practices Whitepaper for SQL Server 파티션 얼라이먼트와 디스크 성능 향상  요약하면 : (자세한 내용은 화이트페이퍼 참고 : http://msdn.microsoft.com/en-us/library/dd758814.aspx)  디스크를 어레이로 묶어서(RAID) 사용할때 파티션 얼라이먼트를 하면 추가비용 없이 스토리지 성능을 향상 시킬 수 있는 가장 쉽고 효과적인 방법이다. DBA는하드웨어구성이나 스키마 변경없이가능하다.  파티션 얼라이먼트를 하지 않으면 아래 그림처럼 상단파티션은 정렬되어 있지 않다. 데이터가여러 섹터에 걸쳐 있기 때문에 페널티를 얻게 된다. 실제 화이트 페이퍼의 자료에 따르면 정렬된 6장의 RAID..

Read the End of a Large Error Log (에러로그 끝 부분 읽기)

Read the End of a Large Error Log (에러로그 끝 부분 읽기) Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 SQL Server를 운영하다 보면 예기치 못한 장애가 발생한다. 이때 시스템에 발생하는 에러 및 사용자 에러를 에러로그라는 곳에 남길 수 있다. 문제는 이 에러로그가 매우 커졌을 때 로그 메시지 자체를 로딩 하는데 매우 오래 걸린다는 것이다. 지금 당장 에러 메시지를 확인하여야 하는데 로그 파일이 너무 커서 열리지가 않는다면 어떻게 할까? 다음 실습을 통하여 마지막 로그만 읽어오는 방법을 알아 보자. SSMS를 통한 에러로그 확인 방법. 에러로그 파일이 클 경우 로딩하는데 오래 걸리며 SSMS 응용프로그램에 문제가 있을 경우..

데이터베이스 여유공간 확인

데이터베이스 여유공간 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 데이터베이스를 운영하다 보면 데이터가 증가함에 따라 할당된 용량이 가득 차거나 또는 자동 증가 옵션으로 인하여 꾸준히 증가하는 현상을 경험 할 수 있다. DBA는 데이터 파일 사이즈의 증가에 대하여 꾸준히 모니터링 해야 한다. 다양한 스크립트를 통하여 데이터베이스의 여유 공간과 현재 데이터베이스의 파일 옵션 환경을 확인 하자. 다음 스크립트를 실행하면 드라이브 별로 전체 디스크의 용량을 확인 할 수 있다. xp_fixeddrives 위의 스크립트에서는 드라이브의 전체크기 밖에 알 수 없다. 다음의 스크립트를 통하여 드라이브 별로 전체 공관과 남은 공간을 확인하자. 'xp_cmdshell'을 사용하..

FILE GROUP 간 데이터 이동

FILE GROUP 간 데이터 이동 Version : SQL Server 2005, 2008, 2008R2, 2012 비즈니스 환경에 따라 별도의 파일 그룹에 대형 테이블 또는 일부 테이블을 보관하고 계획에 따라 파일 그룹을 읽기 전용으로 사용하는 경우가 있다. 이 때 별도의 파일그룹에 데이터를 이동하는 방법은 무엇이 있는지 알아 보자. 일반적으로 파일 그룹간에 데이터파일은 이동할 수 없다. 클러스터 인덱스를 통하여 파일그룹간의 데이터를 이동 할 수 있다. 클러스터형 인덱스의 리프 수준과 데이터 페이지는 정의가 동일하므로, 클러스터형 인덱스를 만들고 ON partition_scheme_name 또는 ON filegroup_name 절을 사용하여 효과적으로 테이블을 만든 파일 그룹의 테이블을 새 파티션 구..

문서화 되지 않은 sys.fn_PhysLocFormatter 함수

문서화 되지 않은 sys.fn_PhysLocFormatter 함수 Version : SQL Server 2008, 2008R2, 2012 어떠한 이유로 인하여 데이터가 비정상적으로 저장 되었거나 데이터를 select 하였는데 반환된 값이 정상적이지 않을 경우 우리는 DBCC PAGE 명령어를 이용하여 페이지 레벨에서 저장되어 있는 값을 확인 한다. 이 때 실제 SELECT 된 데이터의 상관관계를 확인할 수 있는 방법이 없을까? 문서화 되어 있지는 않지만 sys.fn_PhysLocFormatter를 이용하여 확인 할 수 있다. sys.fn_PhysLocFormatter 함수가 어떤 기능을 하는지 알아 보자. sp_helptext 'sys.fn_physLocFormatter' Text ------------..

SQL Server 관리자 전용 연결(DAC)

SQL Server 관리자 전용 연결(DAC) Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 2005 이상 부터는 관리자 전용연결 (DAC)라는 기능이 도입 되었다. 이 기능은 서버가 잠겨 있거나 비정상적인 상태로 SQL Server 데이터베이스 엔진 연결이 되지 않을 때 관리자가 실행중인 서버에 연결하여 진단 또는 T-SQL문을 실행하여 문제를 해결할 수 있는 기능이다. DAC를 사용하기 위해서는 remote admin connection 옵션을 활성화 시켜야 한다. SSMS를 이용한 remote admin connection 방법에 대해서 알아 보자. 아래 그림과 같이 마우스 오른쪽 버튼을 이용하여 [패싯]을 클릭 한다. [패싯 보기] 창에서 [..

파일 접근 권한으로 인한 DB복원 실패 작업 해결하기

파일 접근 권한으로 인한 DB복원 실패 작업 해결하기 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 DB를 복원하는 방법에는 여러 가지 방법이 있다. 지금까지 다룬 포스팅에서 보면 백업파일에서 복원하는 방법, 스냅샷 파일에서 복원하는 방법, MDF를 이용한 복원 방법 등 이 외에 매우 다양한 방법이 있다. 그런데 전달 받은 백업 파일 또는 데이터 파일을 복원하려 할 때 파일에 접근 권한 자체가 되지 않아 복원 작업이 실패하는 경우가 있다. 나의 경우에도 퍼블리셔에서 전달 받은 파일이 계정 권한으로 인하여 복원되지 않는 경험이 있다. 이때 어떻게 해결하는지 실습을 통해서 알아 보자. 먼저 계정에 다른 파일 엑세스 권한을 다르게 하기 위하여 SSMS에서 윈도우 ..

DBCC CHECKDB 실행과 히스토리 관리

DBCC CHECKDB 실행과 히스토리 관리 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 우리는 데이터베이스 무결성 검사시 DBCC CHECKDB를 사용한다. 개인적으로는 주기적으로 CHECKDB를 통하여 데이터베이스의 무결성 검사를 할 것을 권장한다. 참고로 CHECKDB를 실행하는 동안 성능 문제가 발생 할 수 있으므로 DBA가 잘 판단하여 진행 하도록 하자.(나의 경우에는 매주 진행되는 정기점검에 검사한다.) CHECKDB를 실행하는 것 까지는 좋았는데 이 결과를 히스토리로 관리할 방법이 없을까? 원하는정보만 쿼리를 이용하여 확인 할 수는 없을까? 오늘 실습을 통하여 CHECKDB의 결과를 저장하고 검색하는 방법을 알아 보자. SSMS에서 CHECKD..