Digamos que eu tenho um banco de dados do SQL Server cujos arquivos de dados foram criados com um tamanho inicial de 100 GB, mas contém apenas 10 GB de dados. Um backup do banco de dados terá apenas 10 GB de tamanho.
Desejo restaurar esse backup em um servidor diferente (ou em um banco de dados diferente no mesmo servidor), mas não quero que ele ocupe o mesmo espaço em disco que o original (100 GB), que é o que acontece por padrão.
Não consigo encolher o banco de dados original antes de fazer um backup (é um banco de dados de produção e precisa de muito espaço pré-alocado); Eu poderia reduzir o banco de dados restaurado após a conclusão da restauração, mas eu realmente preferiria que ele não ocupasse 100 GB enquanto fazia isso; além disso, nesse cenário específico, não tenho muito espaço livre em disco; portanto, a restauração não vai a lugar nenhum.
Existe alguma maneira de restaurar o banco de dados e ocupar apenas tanto espaço quanto os dados reais que ele contém ?
fonte
Respostas:
Não, desculpe - de jeito nenhum. A restauração restaura os arquivos como estavam no backup. Schinking deve ser feito depois disso ou antes de fazer o backup.
fonte
Se você tiver pouco espaço em disco, poderá colocar o arquivo .bak em um compartilhamento de rede e restaurá-lo a partir daí. Deve funcionar se o seu servidor sql em execução com uma conta de domínio e conceder ao compartilhamento direitos suficientes para ler o arquivo.
A outra opção que estava anteriormente na cesta você está louco (mas útil apenas se o seu sql server 2008 r2 em execução) é que o SQL Server suporta a criação de arquivos de banco de dados diretamente em um compartilhamento sem a necessidade de usar um traceflag; da experiência pessoal você trabalha! Assim, você pode fazer uma restauração com o MOVE em um compartilhamento.
fonte
De um modo geral, não. Algumas idéias aleatórias que podem ou não ser úteis para você:
Finalmente, eu também gosto de "espaço livre" nos meus bancos de dados de produção, mas 90 GB livres de 100 GB no total parecem um pouco extremos. As etapas a seguir podem fornecer o que você precisa e não deve afetar a produção:
DBCC SHRINKFILE ('myfile.MDF', TRUNCATEONLY)
no arquivo de dados de produção para liberar temporariamente qualquer espaço livre no final do arquivo (um TRUNCATEONLY não exige muito IO e não fragmentará índices)DBCC SHRINKFILE
no arquivo de log de produção durante um período de baixa atividade, logo após fazer um backup do log.ALTER DATABASE MODIFY FILE
para aumentar novamente o arquivo de dados de produção para o tamanho original.Não deve haver nenhum impacto na produção usando essas etapas. O único risco é que alguns dos dados estejam no final do arquivo de 100 GB, caso em que a Etapa (1) não liberará muito espaço.
fonte