Restaurar arquivo bak para arquivos menores de banco de dados mdf e ldf

11

Eu tenho um banco de dados legado cuja pesadelo falta de design não entrarei aqui, mas os arquivos no servidor são (relativamente) enormes. Eu tenho:

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

É feito backup desse banco de dados em um arquivo .bak todas as noites e enviado para o nosso servidor de relatórios, onde é restaurado. O arquivo .bak é muito menor, com apenas 1,8 GB.

No entanto, quando tento restaurá-lo no servidor de relatórios, ele falha devido ao espaço insuficiente. Existem cerca de 100 GB gratuitos no servidor e ele está tentando consumir os 139,4 GB inteiros que os arquivos consumiram no servidor original. A menos que meu conhecimento de compactação esteja terrivelmente errado, estou bastante confiante de que o arquivo de 1,8 GB não está realmente expandindo 7400%.

Minha pergunta: Existe alguma maneira de dizer ao SQL Server para restaurar esse arquivo de backup sem reservar esse espaço antecipadamente? Eu não me importo com nenhum dos logs; Eu só preciso que os dados estejam lá. Entendo bancos de dados da perspectiva de desenvolvimento e esquema, mas não sou de forma alguma qualquer DBA.

Isso está no SQL Server 2008 R2. Agradeço por qualquer ajuda ou sugestões.

eouw0o83hf
fonte

Respostas:

11

O backup contém duas informações:

Os dados reais no backup são aqueles de 1,8 GB. Mas os metadados descrevem o layout dos arquivos como no servidor de produção original. Embora pareça compressão, não é compressão real. São apenas metadados x conteúdo. o problema é que, durante a restauração, a máquina de relatório cria um layout conforme descrito nos metadados, portanto, 114,6 GB + 24,8 GB. Agora, a verdadeira questão: você pode restaurá-lo sem recriar o layout original do arquivo DB? Não. No entanto, existem outras soluções para o seu problema: traga novamente o banco de dados original. A redução do log de transações abrange as etapas que você precisa executar, pois o log é o seu principal ponto problemático. Em seguida, implantaria o envio de logs em vez de backup / restauração.

Remus Rusanu
fonte
Obrigado; encolher o log de transações fez o truque perfeitamente.
precisa saber é o seguinte
1
Envio de log em vez de backups de log?
Thomas Stringer
4
@ Shark: envio de logs em vez de backups completos , como forma de entregar o banco de dados à máquina de relatório.
Remus Rusanu
Oh, ok, eu perdi completamente essa parte da pergunta. Obrigado pelo esclarecimento !!
Thomas Stringer
0

O SQL Server 2012 permite usar apenas o arquivo mdf do banco de dados e anexá-lo ao SQL Server: http://msdn.microsoft.com/en-us/library/ms174385.aspx . O SQL Server cria um novo arquivo ldf no qual você pode especificar o tamanho. Então:

  • use o modelo de recuperação simples para impedir que seu arquivo de log cresça ou
  • use o modelo de recuperação completa e faça backups regulares do log de transações. Isso também evitará que o arquivo de log cresça
Carol Baker West
fonte