SQL Server 818

SSMS 명령 단축키 설정

SSMS 명령 단축키 설정 Version : 2000, 2005, 2008, 2008R2 SQL Server Management Studio에는 많은 숨겨진 기능이 있다. 오늘은 특정 저장 프로시저나 자주 사용하는 명령어를 바로가기 키에 저장하여 사용하는 방법을 알아 본다. SSMS에서는 기본적으로 Alt+F1(sp_help), Ctrl+1(sp_who), Ctrl+2(sp_lock)와 같은 바로가기 키를 제공한다. 이제 사용자가 필요한 바로가기 키를 등록 해보자. 오늘 예제로 사용할 코드는 업무 환경에서 빈번히 사용하는 Select top 10 * from Tbl_X 구문이다. (데이터 조회이전에 어떤 데이터가 있는지 가장 많이 사용하는 듯 하다.) SSMS를 실행하여 [도구] –[옵션]을 선택 한다...

Min / Max Server Memory 설정

Min / Max Server Memory 설정 SQL Server서버는 메모리가 필요할 때 물리적인 메모리를 할당하여 쓰다가 윈도우 또는 다른 어플리케이션에서 메모리를 필요로 할 경우 자신이 사용하지 않는 메모리를 반환하는 구조이다. (SQL Server 2005 이상) 하지만 SQL Server가 메모리를 사용하고 있을 때 윈도우나 기타 어플리케이션에 의해 메모리를 뺏기는 현상이 발생 할 수도 있다. 이를 방지 하기 위하여 [Min / Max 메모리] 설정과 [락 페이지 인 메모리] 설정을 해야 한다. 이번에는 Min / Max 메모리 설정에 관해서 알아 보도록 한다. SSMS를 활용한 Min / Max Memory 설정. SSMS의 개체 탐색기에서 데이터베이스를 선택. 마우스 오른쪽을 클릭하여 [속..

Tempdb 에러

Tempdb 에러 Tempdb 디바이스가 사라 졌거나? 여유 디스크의 공간이 tempdb 보다 작거나? 설정된 Tempdb 경로가 틀리거나? 할 때 SQL Server가 정상적으로 시작이 되지 않는다. (위 상황 외에 매우 많은 여러 가지 상황이 들이 존재 한다.) 이럴 때 어떻게 해야 할까? 디스크가 부족한 상황을 만들기 위하여 USB 메모리를 이용하여 매우 적은 공간만 남겨 두도록 한다. 현재의 TEMPDB의 파일 위치 및 디스크 크기등 정보를 확인 한다. 현재 C 드라이브에 위치해 있으며 21 메가를 사용 한다. SP_HELPDB TEMPDB GO 다음 명령문을 이용하여 TEMPDB의 파일 위치를 변경 하자. 경로를 변경하고 SP_HELPDB 명령문을 사용하여 확인해 보면 경로는 변경되어 있지만 실..

SQL Server ErrorLog에 백업 로그 남지기 않기

SQL Server ErrorLog에 백업 로그 남지기 않기 SQL Server에 문제가 발생하였을 때 또는 수시로 ErrorLog를 확인하여 시스템에 문제가 없는지 확인 한다. 이때 가장 많이 보이는 에러가 있다. [Database backed up] 로그. 즉 데이터베이스를 백업할 때 남기는 로그이다. 정상적으로 실행되더라도 로그를 남기므로 정작 확인하여야 할 로그를 찾는데 어려움이 있다. 옵션을 사용하여 백업시 로그를 남기지 않도록 하자! - 전체 스크립트 -- 백업진행 BACKUP DATABASE SW_TEST TO DISK = 'D:\BACKUP\SW_TEST.BAK' GO -- 정상적으로로그가남는지확인. EXEC SP_READERRORLOG GO -- 로그를기록하지않도록옵션적용 DBCC TRA..

SQL Server의 Errorlog는 어디에 저장 될까?

SQL Server의 Errorlog는 어디에 저장 될까? 해외 여러 서비스를 담당하고 있는 나의 질문 중 하나는 "ErrorLog 폴더는 어디인가요?" 이다. 보통은 디폴트 설치되면 경로가 동일하다. 하지만 예외는 있는 법! SSMS에서 쿼리를 이용하여 저장 폴더를 확인하자. 아래 쿼리를 입력하면 Errorlog의 저장 폴더 위치가 나타난다. SELECT SERVERPROPERTY('ERRORLOGFILENAME') GO ErrorLog 폴더에는 덤프파일도 저장되므로 유용하게 사용할 수 있다. SQL Server 2005의 기본 폴더 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG SQL Server 2008의 기본 폴더 C:\Program Files..

통계(Statistics)

통계(Statistics) 검색 조건이 주어질 때 해당 컬럼으로 구성되는 인덱스를 사용할지 여부를 옵티마이저가 판단의 근거로 활용하는 것이 통계이다. 통계는 데이터가 있는 컬럼에 대해 인덱스가 만들어질 때 이 컬럼 값의 히스토그램 및 관련정보를 이용하여 만들어 진다. Sysindex 테이블의 image형식의 statblog컬럼에 통계정보가 저장된다. SELECT * FROM SYSINDEXES 데이터베이스 옵션의 auto create statistics와 auto update statistics는 모든 데이터베이스에 대해 자동으로 ture로 설정되며 이 옵션들이 설정되어 있으면 인덱스뿐만 아니라 인덱스가 없는 컬럼에 대해서도 필요할 경우 자동으로 통계가 만들어 지고 일정 비율(전체행의 약20%)의 데이터..

활성 트랜잭션 찾기

활성 트랜잭션 찾기 현재 활성되어 있는 트랜잭션에서 오래된 트랜잭션은 어떤 것이 있을가? 그리고 누가 이 트랜잭션을 발생 시켰을까? 다음 스크립트를 이용해서 찾아 보도록 합니다. SELECT A.SESSION_ID, DATEDIFF(MINUTE, B.LAST_REQUEST_END_TIME, GETDATE()) AS [LOCKING MINUTS], B.LOGIN_TIME, B.HOST_NAME, B.PROGRAM_NAME, B.CLIENT_INTERFACE_NAME, B.LOGIN_NAME, B.STATUS, B.LAST_REQUEST_START_TIME, B.LAST_REQUEST_END_TIME, TEXT FROM SYS.DM_TRAN_SESSION_TRANSACTIONS AS A INNER JOIN ..

Forwarded Record (행 이동에 대한 포워드)

Forwarded Record (행 이동에 대한 포워드) 가변 컬럼(varcahr, nvarchar)에서 컬럼이 값이 현재 저장되어 있는 값 보다 큰 값으로 수정 되면 어떻게 될까? 결론부터 말하면 이 때에는 기존 페이지에는 더 큰 값으로 수정된 행의 값에 대한 공간이 없어서 새로운 값을 넣을 수 없어 새로운 행을 다른 페이지에서 할당 받아 값을 넣고 기존의 행에서 새로운 행으로 포워딩 하게 됩니다. 포워드 된 행은 Record Type에 FORWARDING_STUB로 표시 됩니다. 다음 실습을 통해서 알아 보도록 하겠습니다. 전체 코드 BEGIN TRY DROP TABLE TBL_X END TRY BEGIN CATCH END CATCH GO CREATE TABLE TBL_X (NUM INT, NAME ..

인덱스 생성 순서에 따른 내부 작업 변화

인덱스 생성 순서에 따른 내부 작업 변화 인덱스에는 여러 종류가 있지만 가장 많이 사용하는 부분이 클러스터 인덱스와 넌-클러스터 인덱스 이지 않을까 생각 합니다. 그렇다면 클러스터 인덱스와 넌-클러스터 인덱스가 있을 때 인덱스 생성 순서에 따라 성능 문제가 발생할까? 입니다. 좀더 정확히 말하면 인덱스 생성순서에 따라 내부적으론 어떻게 작동할까 입니다. 결론부터 말하면 넌-클러스터 인덱스가 있는 상태에서 클러스터형 인덱스를 추가하면 RID 값 대신 클러스터형 인덱스의 키 값을 기존 인덱스가 내부적으로 재구성 됩니다. 다음 예제를 통해서 알아 보도록 하겠습니다. 전체 코드 BEGIN TRY DROP TABLE TBL_X END TRY BEGIN CATCH END CATCH GO CREATE TABLE TB..

Ghost Record(인덱스에서 행 삭제시 발생)

Ghost Record(인덱스에서 행 삭제시 발생) 인덱스가 있는 행을 삭제 할 경우 인덱스의 효율성을 높이기 위해서 인덱스의 리프-레벨에 삭제할려는 행에 대해서는 우선 고스트 레코드(Ghost Record )로 마크해 놓고 주기적인 삭제 작업이 실행 됩니다. 즉 삭제 행에 대해서 즉시 삭제가 이루어지지 않습니다. 인덱스 리프-레벨 페이지의 레코드가 삭제될 때 고스트 레코드로 변경되고 레코드가 포함된 페이지게 고스트 레코드 개수가 설정 됩니다. 이 고스트 레코드를 삭제하는 프로세스를 Ghost CleanUp또는 House Keeping 이라고 합니다. [Ghost Record 살펴 보기] 전체 코드 BEGIN TRY DROP TABLE TBL_X END TRY BEGIN CATCH END CATCH GO..