공유 호스팅 계획에 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.
내 문제를 어떻게 해결할 수 있습니까? 지원 팀에 연락해야하나요 (호스트에게는 조금 열악 함) 아니면 직접 해결할 수 있나요?
답변
호스팅 회사에 전화하여 정기적 인 로그 백업을 설정하거나 복구 모델을 단순하게 설정하십시오. 나는 당신이 선택에 영향을 미치는 것이 무엇인지 알고 있다고 확신하지만 어쨌든 명시 적으로 말할 것입니다. 임의의 시점으로 복원하는 기능이 필요한 경우 복구 모델을 전체로 설정하십시오. 어느 쪽이든 데이터베이스가있는 그대로 잘못 구성됩니다.
답변
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;
답변
디스크 공간이 부족한 경우 업데이트 SQL 문이 실패하면 ” ‘LOG_BACKUP’으로 인해 데이터베이스 XXXXXXXXXX의 트랜잭션 로그가 가득 찼습니다.”라는 메시지가 반환되는 경우가 있습니다. 디스크 공간 확인 🙂
답변
이 오류는 LOG_BACKUP으로 인해 트랜잭션 로그가 가득 차서 발생합니다. 따라서이 데이터베이스에 대해 작업을 수행 할 수 없으며이 경우 SQL Server 데이터베이스 엔진에서 9002 오류가 발생합니다.
이 문제를 해결하려면 다음을 수행해야합니다.
- 전체 데이터베이스 백업을 수행하십시오.
- 로그 파일을 축소하여 실제 파일 크기를 줄이십시오.
- LOG_BACKUP을 만듭니다.
- LOG_BACKUP 유지 관리 계획을 만들어 자주 백업 로그를 가져옵니다.
이 오류에 대한 모든 세부 정보와 해결 방법에 대한 기사를 작성했습니다. 데이터베이스 ‘SharePoint_Config’의 트랜잭션 로그가 LOG_BACKUP으로 인해 가득 찼습니다.
답변
동일한 오류가 발생했지만 백엔드 작업 (SSIS 작업)에서 발생했습니다. 데이터베이스의 로그 파일 증가 설정을 확인한 결과 로그 파일은 1GB로 제한되었습니다. 따라서 작업이 실행되고 SQL 서버에 더 많은 로그 공간을 할당하도록 요청했지만 로그의 증가 제한이 감소하여 작업이 실패했습니다. 로그 증가를 수정하고 50MB 증가 및 무제한 증가로 설정했는데 오류가 사라졌습니다.