É possível fazer backup e restaurar parte de um banco de dados no sql-server?

19

Temos um banco de dados sql-server 2005 que transferimos regularmente do site do cliente para o nosso. Isso leva muito tempo, porque não temos uma conexão direta e precisamos transferir o arquivo pelo aplicativo de transferência de arquivos baseado na Web. Atualmente, o banco de dados tem cerca de 10 GB, mas não precisamos de todos os dados - a maioria está em tabelas de auditoria e tabelas que contêm valores calculados que podem ser gerados novamente.

Eu olhei para criar um grupo de arquivos para armazenar as tabelas de auditoria e esperava poder fazer backup e restaurar o grupo de arquivos principal. Posso fazer o backup corretamente, mas ao restaurar, recebo um erro dizendo que não o estou restaurando no mesmo banco de dados. É possível restaurar parte de um banco de dados para um servidor diferente usando grupos de arquivos? Existe uma maneira melhor de fazer isso?

Adam Butler
fonte
1
Você pode se beneficiar da leitura desta pergunta: O menor backup possível ... com o SQL Server , e especialmente a resposta de Brent.
Marian
Uma vez que este não parece possível sem muito hackery Eu acredito que podemos olhar para mover todas as tabelas de log de auditoria para um banco de dados separado
Adam Butler
Isso não exigiria uma alteração de código no aplicativo? Isso é pedir demais para o cliente passar.
Shawn Melton

Respostas:

15

Para ser sincero, é mais fácil:

  • fazer backup / restaurar uma cópia localmente
  • remova dados indesejados da cópia (com DELETE ou TRUNCATE TABLE, não DROP ...)
  • envie a cópia

Eu não me incomodaria com grupos de arquivos por causa da complexidade adicional que você notou ...

gbn
fonte
1
Sugiro alterar esse banco de dados recém-restaurado para um modelo de recuperação simples. msdn.microsoft.com/pt-BR/library/ms189272.aspx
datagod 14/01
7

Do jeito que você fala sobre precisar apenas do grupo de arquivos primário, parece-me que você deseja apenas a estrutura do banco de dados e uma quantidade muito pequena de dados. Eu sugeriria que você apenas desejasse uma atualização da estrutura do banco de dados (objetos, tabelas, etc) para simplesmente criar um script no banco de dados com todos os objetos. Isso pode ser feito de maneira rápida e fácil com o PowerShell.

Em seguida, os dados que você realmente precisa, que não podem ser regenerados, simplesmente exportam esses dados (um script do PowerShell também pode fazer isso). Tenho certeza de que o arquivo de exportação pode ser compactado em um tamanho pequeno e depois transferido pela conexão com o site.

É claro que, assim como esta, a sugestão do @gbn pode ser roteirizada, então cabe a você determinar qual opção leva menos tempo.

Shawn Melton
fonte
2

Isso é possível usando a restauração fragmentada . Os objetos e os grupos de arquivos do banco de dados de origem devem ser organizados de maneira a suportar isso. O RESTORE exige palavras-chave específicas adicionais.

Embora o conceito possa demorar um pouco para se acostumar, a quantidade de scripts a implementar não é mais do que a das outras soluções sugeridas.

Michael Green
fonte
-1

Clique com o botão direito do mouse e gere scripts e altere o nome do banco de dados para o destino (USE db).

Explicado aqui

Jude
fonte
O que há de errado com isso?
Jude