Microsoft SQL Server 오류 9001 진단 : 데이터베이스의 로그를 사용할 수 없습니다


20

주말 동안 웹 사이트가 작동을 멈추고 웹 사이트에 요청할 때마다 이벤트 뷰어에 다음 오류가 기록됩니다.

이벤트 ID : 9001

데이터베이스 ' database name '에 대한 로그를 사용할 수 없습니다. 이벤트 로그에서 관련 오류 메시지를 확인하십시오. 오류를 해결하고 데이터베이스를 다시 시작하십시오.

이 웹 사이트는 전용 서버에서 호스팅되므로 서버에 RDP를 설치하고 둘러 볼 수 있습니다. LDF데이터베이스 파일이 존재하는 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA폴더,하지만 같은 오류보고 대화 상자에서 관리 Studio 결과에서 데이터베이스에 어떤 작업을 수행하려고 - 9001 : 데이터베이스의 로그를 사용할 수없는 ...

이 오류가 발생한 것은 이번이 처음이며 2 년 이상이 전용 웹 서버에서이 사이트 (및 기타 사이트)를 호스팅하고 있습니다.

이 오류는 손상된 로그 파일을 나타냅니다. 데이터베이스를 분리 한 다음 며칠 전에 백업을 복원하여 웹 사이트를 온라인으로 되돌릴 수 있었지만이 오류는 더 불길한 문제, 즉 하드 드라이브 오류를 나타냅니다.

나는 웹 호스팅 회사에 지원을 이메일로 보냈으며 이것이 그들의 대답이었습니다.

이벤트 로그에 원인에 대한 다른 표시가 나타나지 않으므로 로그가 손상되었을 수 있습니다. 현재 메모리의 리소스는 87 %이며 영향을 줄 수 있지만 거의 없습니다.

로그가 "손상 되었습니까?"

내 질문 : 이 문제를 진단하기 위해 취해야 할 다음 단계는 무엇입니까? 이것이 실제로 하드웨어 문제인지 어떻게 알 수 있습니까? 그렇다면 디스크 교체 이외의 옵션이 있습니까?

감사

답변:


16

데이터베이스 손상 문제의 99 % 이상이 스토리지 시스템을 수행하는 것입니다. 나머지 문제 중 절반은 메모리 부족으로 인한 것이며 나머지 절반은 SQL Server의 버그입니다.

확률은 스토리지 문제입니다.

다시 발생하면 데이터베이스에 대해 DBCC CHECKDB를 실행하십시오. 그러면 손상에 대한 추가 정보가 제공되며 복원을 수행하지 않고 문제점을 해결할 수 있습니다. 데이터베이스에 대해 checkdb를 실행하려면 비상 모드에서 데이터베이스를 온라인 상태로 만들어야합니다.

메모리 사용량이 87 %이면 문제와 관련이 없습니다. SQL Server는 의도적으로 메모리를 100 % (또는 그에 가까운)까지 실행합니다.


제안 해 주셔서 감사합니다. 실제로 DBCC CHECKDB를 시도했지만 로그 파일을 찾을 수 없다는 오류를 포함하여 많은 오류가 발생했습니다. 그러나 비상 모드에서 DB를 온라인 상태로 만들려고하지 않았습니다.
Scott Mitchell

일반적으로 트랜잭션 로그가 손상된 경우 꽤 나쁩니다. CHECKDB는 손상 상태에 따라 복구 할 수도 있고 복구하지 못할 수도 있습니다. 트랜잭션 로그 백업이있는 경우 (제공자가 허용하지 않을 수 있음) 데이터가 거의 손실되지 않았을 수 있습니다. checkdb 출력의 끝에는 데이터베이스 파일의 문제점을 정정하는 데 필요한 복구 레벨이 있습니다.
mrdenny

옳은. 메모리 사용량은 메모리가 손상되어 디스크로 전송되지 않는 한 이와 관련이 없습니다. 어느 쪽이든 이벤트 로그에 IO 문제의 다른 표시가 나타납니다. 어딘가에.
Michael K Campbell

디스크에 대해 디스크 검사 (chkdsk)를 실행하여 Windows에 디스크에 문제가 있는지 확인할 수 있습니다. 이상하게도 디스크를 교체해야합니다. 그러나 디스크 컨트롤러 코드 또는 디스크 BIOS 내의 코드에 버그 일 수 있습니다. 두 경우 모두 디스크 및 / 또는 컨트롤러 교체를 살펴 보겠습니다.
mrdenny

8

Management Studio에서 데이터베이스를 오프라인으로 만든 다음 즉시 온라인으로 다시 가져 와서이 문제를 해결할 수있었습니다. dbcc checkdb이 작업을 수행 한 후에 해결 된 오류가 발생했습니다. 내가 말할 수없는 이유는 이 단지 것을 일을 했던 일을.


5

나는 최근 에도이 문제를 겪었으며 데이터베이스를 AUTO CLOSE로 설정하면 산을 조사 한 후에 일반적으로 나타납니다. 모든 데이터베이스를 AUTO CLOSE = FALSE로 설정했습니다. 이것은 하나의 데이터베이스로 시작한 다음 두 데이터베이스로 넘어 갔으며 다음 데이터베이스는 모두 데이터베이스에있었습니다. 데이터베이스를 복원하는 대신 SQL Server 인스턴스 서비스를 다시 시작했습니다. 증상을 해결하는 또 다른 방법은 문제가있는 데이터베이스를 오프라인으로 전환하여 다시 온라인 상태로 만드는 것입니다.


1

MS SQL은 영향을받는 데이터베이스의 로그를 오프라인으로 가져와 데이터베이스 손상을 방지합니다. 그렇기 때문에 9001 오류가 발생합니다.

영향을받는 데이터베이스를 오프라인 / 온라인 상태로 만들면 MS SQL은 오류가 다시 발생할 때까지 영향을받는 데이터베이스 로그를 활성화합니다.

이를 해결하는 또 다른 방법은 Auto_Close 옵션을 OFF로 변경하는 것입니다.

http://sqlmag.com/blog/worst-practice-allowing-autoclose-sql-server-databases


0

나는 당신이 당신의 SQL 서버를 위해 디스크를 갈 준비가되어 있다고 추측 / 희망합니다. 하드웨어 문제가 의심되는 경우 가장 먼저해야 할 일은 RAID 유지 관리 / 진단 도구를 실행하는 것입니다.

두 번째는 (가능하면 동시에 가능할 수도 있음) 데이터베이스 (아마도 시스템 데이터베이스)에서 dbcc checkdb를 실행하는 것입니다.


0

첫 번째 단계는 로그와 mdf 파일을 완전히 다른 드라이브에 백업하는 것입니다. 빨리! (파일 사본)

또한 전체 데이터베이스 백업을 수행하십시오.

다음으로 다음을 시도하십시오. 가능한 경우 현재 데이터베이스를 사용하여 로그 파일을 분리 한 다음 로그 파일을 삭제하거나 디스크의 완전히 다른 위치로 이동하십시오. 그런 다음 데이터베이스를 다시 연결하면 로그 파일과 함께 GUI에 표시되고 로그 파일이 표시되지 않도록 제거 (또는 삭제)를 클릭 한 다음 확인을 클릭하십시오. 기본적으로 로그없이 첨부하면 기본 위치에 데이터베이스에 대한 로그 파일이 작성됩니다.

알려주세요.


0

예, 같은 문제가 발생했습니다. tempDb 오류 9001, 즉 로그를 사용할 수 없습니다. 우리는 서비스를 다시 시작했고 모두 괜찮 았습니다.

이 문제의 원인은 SAN 또는 스토리지 문제였으며 I / O 쓰기 작업 중에 15 초 이상 쓸 수 없었습니다.


0

어제 "데이터베이스 '%'에 대한 로그를 사용할 수 없습니다. 치명적인 오류 9001, msg 21. 관리자에게 문의하십시오."와 동일한 오류가 발생했습니다.

해결 방법- 'TempDB'를 확인했지만 다른 시스템 데이터베이스와 마찬가지로 액세스 할 수 없었습니다. 그런 다음 복구 옵션을 시작하기 전에 해당 인스턴스의 SQL 서비스를 다시 시작하면 문제가 해결되었습니다. :) :)


-2

로그 확장에 사용할 수있는 디스크 공간이 없을 때 이런 일이 발생했습니다. C : \에 충분한 공간이 있는지와 로그가 관리되고 있는지, 즉 전체 복구 모드에있는 경우 백업되는지 확인할 수 있습니다.

옵션이있는 경우 ldf (및 mdf)를 부팅 볼륨에서 옮길 것입니다.


씬 프로비저닝 된 스토리지를 사용하지 않고 기본 스토리지에 공간이 없으면 하드 드라이브 공간이 부족해도 데이터베이스가 손상되지 않습니다. 그러나 그것은 완전히 다른 악몽입니다.
mrdenny

나는 rephrase .. 아마 데이터베이스의 손상은 아니지만, 명시된대로 로그 파일을 사용할 수없는 원인이 될 것입니다.
SqlACID

1
드라이브에 25GB 이상의 여유 공간이 있으며 문제의 데이터베이스 크기가 25MB 미만입니다.
Scott Mitchell

공간 부족으로 인해 발생하는 유일한 오류는 트랜잭션을 로그에 쓸 수 없기 때문에 데이터베이스 내에서 행을 수정하려고 할 때 파일이 가득 찬 오류입니다 (OP에 명시된 내용이 아님). 공간이 부족해도 데이터베이스를 사용할 수 없습니다 (OP에서 명시한 내용).
mrdenny

동의하지 않는다. 로그 파일이 있던 드라이브의 공간이 부족한 다음 정확히 같은 문제가 발생하기 시작했습니다.
ADNow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.