model Database 손상시 발생하는 영향 및 복구 방법
· Version : SQL Server
SQL Server에서 사용되는 system database에는 master, model, msdb, temp 4가지가 있다. master 경우 SQL Server에 대한 속성 정보를 가지고 있기 때문에 중요성에 대해서 많은 사람들이 인지하고 있다. 이번 시간에는 model 데이터베이스의 중요성에 대해서 알아보고 model 데이터베이스가 손상되었을때 어떤 영향이 있는지, 그리고 복구 방법에 대해서 알아본다.
model 데이터베이스는 SQL Server 인스턴스에서 생성된 모든 사용자 데이터베이스의 템플릿으로 사용된다. 새로운 데이터베이스를 생성하면 데이터베이스 옵션을 포함하여 model 데이터베이스 전체 내용이 새로운 데이터베이스로 복사된다. tempdb 또한 SQL Server 가 재시작 될때 model 데이터베이스로부터 일부 속성을 상속 받아 생성된다. 일반적으로 사용자 데이터베이스의 손상은 빠르게 감지 되지만 (사용자 데이터베이스는 서비스에서 계속 사용중이므로) model 데이터베이스의 경우 시스템이 재시작되거나 새로운 데이터베이스가 만들어질때 까지 손상을 발견하기가 쉽지 않다.
만약 model 데이터베이스가 손상된 채로 시스템이 재시작 되면 어떻게 될까? 위에서 설명하였듯이 SQL Server가 재시작될때 temp를 새로 생성하게 되는데 이때 model 데이터베이스를 참조하는데 model 데이터베이스 가 손상되었으므로 tempdb 또한 생성이 실패된다. 파일 시스템에서 오류 로그를 확인해 보면 tempdb가 손상되어 SQL Server를 시작하지 못했다는 오류를 발견할 수 있는데, 근본적인 원인은 model 데이터베이스가 손상되어 발생한것으로 오류 로그로는 명확하게 원인을 파악하지 못할 수 도 있다.
model 데이터베이스 손상으로 SQL Server가 시작되지 않을 시에는 아래 두 플래그를 적용하여 SQL Server를 시작할 수 있다.
· -T3608 : 마스터 데이터베이스만 복구, tedbmp 가 필요한 작업이 시작되면 model 이 복구되고 tempdb가 생성된다.
· -T3609 : 모든 데이터베이스 복구, tempdb는 지우지 않음.
만약 위 방법으로 복구되지 않고, model 데이터베이스에 대한 백업본이 없다면 동일한 SQL Server 버전 및 데이터 정렬(collation)을 사용하는 다른 데이터베이스로 데이터 파일과 로그 파일을 복사하여 복원할 수 있다.
2017-09-13 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
SQL Server, MS SQL, model, System database, suspect page, dbcc checkdb, system database curruption
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 2016 Large RAM 및 Checkpoint (0) | 2018.03.31 |
---|---|
SQL Server 2016 JSON 형식을 일반 ROW 형식으로 반환하기 (0) | 2018.03.31 |
In-Memory OLTP 사용시 메모리 할당량 초과 오류 (0) | 2017.09.13 |
SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계 (0) | 2017.09.13 |
Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점 (0) | 2017.09.13 |