데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

Tempdb 에러

 

  • Tempdb 디바이스가 사라 졌거나?
  • 여유 디스크의 공간이 tempdb 보다 작거나?
  • 설정된 Tempdb 경로가 틀리거나?

할 때 SQL Server가 정상적으로 시작이 되지 않는다. (위 상황 외에 매우 많은 여러 가지 상황이 들이 존재 한다.)

 

이럴 때 어떻게 해야 할까?

 

디스크가 부족한 상황을 만들기 위하여 USB 메모리를 이용하여 매우 적은 공간만 남겨 두도록 한다.

 

 

현재의 TEMPDB의 파일 위치 및 디스크 크기등 정보를 확인 한다.

현재 C 드라이브에 위치해 있으며 21 메가를 사용 한다.

SP_HELPDB TEMPDB

GO

 

 

다음 명령문을 이용하여 TEMPDB의 파일 위치를 변경 하자. 경로를 변경하고 SP_HELPDB 명령문을 사용하여 확인해 보면 경로는 변경되어 있지만 실제로 적용은 되지 않는 상태이니 반드시 서비스 재시작을 해야 한다.

ALTER DATABASE TEMPDB

MODIFY FILE (NAME = TEMPDEV, FILENAME = 'G:\TEMPDB.MDF')

GO

 

ALTER DATABASE TEMPDB

MODIFY FILE (NAME = TEMPLOG, FILENAME = 'G:\TEMPLOG.LDF')

GO

 

SP_HELPDB TEMPDB

GO

 

 

 

서비스를 재시작 하여 보자.

현재 Tempdb의 드라이브는 USB메모리(G드라이브)로 지정되어 있으며 여유 디스크 공간은 약 8메가 이다. 하지만 tempdb의 시작 필요 크기는 20메가. 어떻게 될까?

 

다음과 같이 에러 문구와 함께 서비스가 시작 되지 않는다.

  • SSMS 화면

 

  • 커맨드 화면

 

USB 메모리 드라이버를 확인해 보면 TEMPDB의 MDF가 생성되었으나 0 바이트로 정상적으로 생성되지 않음을 확인 하였다.

 

이때 해결 방법은 시작 매겨변수를 통하여 최소 구성으로 시작 한다.

시작 옵션 관련 링크 : http://msdn.microsoft.com/ko-kr/library/ms190737(v=sql.100).aspx

옵션 : -f

 

SQL Server 구성관리자에서 시작 매개 변수에 –f 를 사용하여 서비스를 시작 하면 최소 구성으로 SQL Server가 시작되며 Tempdb가 2메가로 기본 폴더에 새로 생성된다.

 

또 다른 방법은 커맨드 창에서 아래 경로로 가서 시작 명령에 –f 의 옵션을 추가하여 실행 합니다. 본 실습인 SQL Server 2008R2에서 진행되었다.

(버전에 따른 경로가 다르므로 주의)

경로 : PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.MSSQLSERVER\MSSQL\BINN

명령어 : SQLSERVR.EXE -F

 

 

이렇게 최소 구성으로 SQL Server를 시작하고 나면 Single User로 동작 하기 때문에 여러 세션이 접근할 수 없다.

 

이 때에는 SSMS실행 시 서버 연결을 하지 말고 [새 쿼리창]을 클릭하여 로그인을 한다.

그리고 서비스에 필요한 설정을 변경하고 SQL Server를 재 시작 한다.

 

SP_HELPDB를 이용하여 TEMPDB의 위치를 확인해 보면 기본 폴더에 2M의 크기로 tempdb가 생성된 것을 확인 할 수 있다.

 

 

Tempdb의 성능과 관련된 부분은 다음 아티클을 참고한다.

관련 링크 : http://sqlmvp.kr/140164023333

 

 
강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp




No. Subject Author Date Views
1633 SSMS 인텔리전스 사용 jevida(강성욱) 2015.03.27 6193
1632 SSMS 줄 번호 표시 jevida(강성욱) 2015.03.26 49082
1631 SSMS 시작 옵션 변경하기 jevida(강성욱) 2015.03.26 4310
1630 SSMS 쿼리 결과 다른 탭에 표시하기 jevida(강성욱) 2015.03.26 4978
1629 SSMS 연결 표시줄 색상 변경 jevida(강성욱) 2015.03.26 4787
1628 SSMS 결과 복사시 열 머리글 포함하기 jevida(강성욱) 2015.03.26 4722
1627 SSMS 결과물을 쉼표로 구분하여 출력하기 jevida(강성욱) 2015.03.26 3953
1626 SSMS 최근 사용한 파일에 대한 설정 변경 jevida(강성욱) 2015.03.25 3689
1625 SSMS 상위 행 선택 및 수정 행 변경 jevida(강성욱) 2015.03.25 7079
1624 SSMS에서 변경 스크립트 자동 생성 jevida(강성욱) 2015.03.25 4100
1623 SSMS 명령 단축키 설정 jevida(강성욱) 2015.03.25 6650
1622 Min / Max Server Memory 설정 jevida(강성욱) 2015.03.24 13775
» Tempdb 장애 유형과 해결방안.(디스크 공간 및 경로 문제) jevida(강성욱) 2015.03.24 5071
1620 SQL Server ErrorLog에 백업 로그 남지기 않기 jevida(강성욱) 2015.03.24 4077
1619 SQL Server의 Errorlog는 어디에 저장 될까? jevida(강성욱) 2015.03.24 3778
1618 통계(Statistics) jevida(강성욱) 2015.03.23 5714
1617 활성 트랜잭션 찾기 jevida(강성욱) 2015.03.23 4066
1616 ForwardedRecord (행 이동에 대한 포워드) jevida(강성욱) 2015.03.23 3406
1615 인덱스 생성 순서에 따른내부 작업 변화 jevida(강성욱) 2015.03.23 5087
1614 SQL Server 성능 테스트 프로그램 minsouk 2015.01.17 5997





XE Login