bak 파일을 더 작은 mdf 및 ldf 데이터베이스 파일로 복원


11

나는 악몽 같은 디자인이 부족한 레거시 데이터베이스를 가지고 있지만 서버의 파일은 (상대적으로) 엄청납니다. 나는 가지고있다:

MyDatabase.mdf : 24.8GB
MyDatabase.ldf : 114.6GB

이 데이터베이스는 매일 밤 .bak 파일로 백업되어보고 서버로 전달되어 복원됩니다. .bak 파일은 1.8GB로 훨씬 작습니다.

그러나보고 서버에서 복원하려고하면 공간이 부족하여 실패합니다. 서버에는 약 100GB의 여유 공간이 있으며 파일이 원래 서버에서 소비 한 전체 139.4GB를 모두 사용하려고합니다. 압축에 대한 지식이 끔찍하게 잘못되지 않는 한 1.8GB 파일이 실제로 7400 %까지 확장되지 않을 것이라고 확신합니다.

내 질문 : 해당 공간을 미리 예약하지 않고이 백업 파일을 복원하도록 SQL Server에 지시하는 방법이 있습니까? 나는 어떤 로그도 신경 쓰지 않는다. 거기에 데이터가 필요합니다. 개발 및 스키마 관점에서 데이터베이스를 이해하지만 결코 DBA는 아닙니다.

이것은 SQL Server 2008 R2에 있습니다. 도움이나 제안에 감사드립니다.

답변:


11

백업에는 두 가지 정보가 포함됩니다.

백업의 실제 데이터는 1.8GB입니다. 그러나 메타 데이터는 원래 프로덕션 서버에서와 같이 파일의 레이아웃을 설명합니다. 압축처럼 보이지만 실제 압축은 아닙니다. 메타 데이터와 컨텐츠입니다. 문제는 RESTORE 중보고 시스템이 메타 데이터에 설명 된대로 114.6GB + 24.8GB의 레이아웃을 작성한다는 것입니다. 실제 질문에 대해 : 원래 DB 파일 레이아웃을 다시 만들지 않고 복원 할 수 있습니까? 그러나 문제에 대한 또 다른 해결책이 있습니다. 원래 DB를 다시 확인하십시오. 트랜잭션 로그 축소는 로그가 가장 큰 문제이므로 수행해야 할 단계를 다룹니다. 다음 으로 백업 / 복원 대신 로그 전달 을 배포 합니다.


감사합니다; 트랜잭션 로그를 축소하면 트릭을 완벽하게 수행했습니다.
eouw0o83hf 23.24에

1
로그 백업 대신 로그 배송 ??
토마스 스트링거

4
@Shark : DB를보고 시스템에 전달하기 위해 전체 백업 대신 로그 전달 .
Remus Rusanu

오 알았어 나는 그 부분을 완전히 놓쳤다. 설명 주셔서 감사합니다 !!
Thomas Stringer

0

SQL Server 2012에서는 데이터베이스 mdf 파일 만 사용하여 SQL Server에 연결할 수 있습니다 ( http://msdn.microsoft.com/en-us/library/ms174385.aspx) . SQL Server는 크기를 지정할 수있는 새로운 ldf 파일을 만듭니다. 그때:

  • 단순 복구 모델 을 사용 하여 로그 파일이 커지지 않도록하거나
  • 전체 복구 모델을 사용하고 정기적 인 트랜잭션 로그 백업을 수행하십시오. 또한 로그 파일이 커지지 않도록합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.