공유 호스트의 " 'LOG_BACKUP'으로 인해 데이터베이스의 트랜잭션 로그가 가득 찼습니다."


89

공유 호스팅 계획에 EntityFramework codefirst 접근 방식을 사용하는 Asp.Net MVC 5 웹 사이트가 있습니다. 제어판에 오픈 소스 WebbsitePanel 을 사용 하며 SQL Server 패널은 다소 제한적입니다. 오늘 데이터베이스를 편집하려고 할 때 다음 오류가 발생했습니다.

The transaction log for database 'db_name' is full due to 'LOG_BACKUP'

나는 주위를 검색하고 이것이것 또는 이것 과 같은 많은 관련 답변을 찾았 지만 문제는 그들이 데이터베이스에서 쿼리를 실행하는 것을 제안한다는 것입니다. 나는 달리기를 시도했다

db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");

Visual Studio (에서 HomeController)를 사용했지만 다음 오류가 발생합니다.

System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.

내 문제를 어떻게 해결할 수 있습니까? 지원 팀에 연락해야하나요 (호스트에게는 조금 열악 함) 아니면 직접 해결할 수 있나요?


트랜잭션없이 ALTER를 실행합니다.
usr

@usr 어떻게할까요?
Alireza Noori 2014 년

데이터베이스 문제로 데이터베이스 축소가 작동 할 수 있습니다. 이에 대해 DBA에게 도움을 요청하십시오.
Shashank Chaturvedi 2014 년

어떻게 든 거래를 열었을 것입니다. 잘 모르겠습니다. EF가 자동으로 수행 할 수도 있습니다. EF와 거래에 대해 약간의 조사를해야합니다. 또는 SSMS에서 실행하십시오. 또는 원시 ADO.NET을 사용하십시오. 아마도 귀하의 호스팅 업체는 어쨌든 그 진술을 허용하지 않을 것이며 로그 백업을 더 자주 발행해야 할 것입니다.
usr

답변:


38

호스팅 회사에 전화하여 정기적 인 로그 백업을 설정하거나 복구 모델을 단순하게 설정하십시오. 나는 당신이 선택에 영향을 미치는 것이 무엇인지 알고 있다고 확신하지만 어쨌든 명시 적으로 말할 것입니다. 임의의 시점으로 복원하는 기능이 필요한 경우 복구 모델을 전체로 설정하십시오. 어느 쪽이든 데이터베이스가있는 그대로 잘못 구성됩니다.


감사합니다. 나는 이것을 직접하고 싶었지만 그들에게도 연락하여 복구를 설정 shrink하고 DB에서 실행했습니다 . 또한 복구가 필요하지 않았기 때문에 SIMPLE모드 로 설정하라고했습니다 .
Alireza Noori 2014 년

1
MSDN 페이지 에서는 복구 모델을 간단하게 설정하는 방법을 설명합니다.
shekhar

143

Ben 's Answer 외에도 필요에 따라 아래 쿼리를 시도 할 수 있습니다.

USE {database-name};  
GO  
-- Truncate the log by changing the database recovery model to SIMPLE.  
ALTER DATABASE {database-name}
SET RECOVERY SIMPLE;  
GO  
-- Shrink the truncated log file to 1 MB.  
DBCC SHRINKFILE ({database-file-name}, 1);  
GO  
-- Reset the database recovery model.  
ALTER DATABASE {database-name}
SET RECOVERY FULL;  
GO 

크레딧 @ cema-sp 업데이트

데이터베이스 파일 이름을 찾으려면 아래 쿼리를 사용하십시오.

select * from sys.database_files;

8
추가 : {database-file-name} 찾기 :select * from sys.database_files;
cema-sp

2
나는 이것이 치료 효과가 있음을 확인할 수 있습니다. 받아 들여진 대답이어야합니다.
garrettendi

2
감사합니다 @Mohit Dharmadhikari; 더 많은 디스크 공간을 할당하고 로그 파일 크기를 늘리는 등 다른 많은 작업을 시도했지만 먼저 기존 로그 파일을 축소 할 때까지 아무것도 작동하지 않았습니다.
Johnny

1
감사합니다, 매우 도움이되었습니다.
Obakeng Molebatsi

2
name다음 쿼리에서 {database-file-name}이 로그 행의 열과 동일하다고 생각 합니다.select * from sys.database_files
Bob Horn

13

디스크 공간이 부족한 경우 업데이트 SQL 문이 실패하면 " 'LOG_BACKUP'으로 인해 데이터베이스 XXXXXXXXXX의 트랜잭션 로그가 가득 찼습니다."라는 메시지가 반환되는 경우가 있습니다. 디스크 공간 확인 :)


5

이 오류는 LOG_BACKUP으로 인해 트랜잭션 로그가 가득 차서 발생합니다. 따라서이 데이터베이스에 대해 작업을 수행 할 수 없으며이 경우 SQL Server 데이터베이스 엔진에서 9002 오류가 발생합니다.

이 문제를 해결하려면 다음을 수행해야합니다.

  • 전체 데이터베이스 백업을 수행하십시오.
  • 로그 파일을 축소하여 실제 파일 크기를 줄이십시오.
  • LOG_BACKUP을 만듭니다.
  • LOG_BACKUP 유지 관리 계획을 만들어 자주 백업 로그를 가져옵니다.

이 오류에 대한 모든 세부 정보와 해결 방법에 대한 기사를 작성했습니다. 데이터베이스 'SharePoint_Config'의 트랜잭션 로그가 LOG_BACKUP으로 인해 가득 찼습니다.


8
답변으로 오류 메시지를 게시하는 것은 전혀 도움이되지 않습니다. 링크 전용 답변도 StackOverflow에서 눈살을 찌푸립니다. 링크에서 관련 텍스트를 추출하여 여기에 인용해야합니다. 이것은 모든 링크가 불가피한 것처럼 미래에 링크가 죽는 경우에 특히 중요합니다.
Dan Bechard

1

동일한 오류가 발생했지만 백엔드 작업 (SSIS 작업)에서 발생했습니다. 데이터베이스의 로그 파일 증가 설정을 확인한 결과 로그 파일은 1GB로 제한되었습니다. 따라서 작업이 실행되고 SQL 서버에 더 많은 로그 공간을 할당하도록 요청했지만 로그의 증가 제한이 감소하여 작업이 실패했습니다. 로그 증가를 수정하고 50MB 증가 및 무제한 증가로 설정했는데 오류가 사라졌습니다.


1

이는 로그 파일의 크기가 제한된 경우에도 발생할 수 있습니다.

개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭합니다.

속성 선택

파일 선택

로그 줄에서 Autogrowth / Maxsize 열의 줄임표를 클릭합니다.

최대 파일 크기는 무제한으로 변경 / 확인합니다.

여기에 이미지 설명 입력

무제한으로 변경 한 후 데이터베이스가 다시 살아났습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.