Microsoft SQL Server 오류 9001 진단 : 데이터베이스의 로그를 사용할 수 없습니다 웹 서버에서이 사이트 (및 기타 사이트)를

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

이벤트 ID : 9001

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

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

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

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

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

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

로그가 “손상 되었습니까?”

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

감사



답변

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

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

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

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


답변

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


답변

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


답변

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

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

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

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


답변

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

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


답변

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

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

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

알려주세요.


답변

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

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