Qual é a maneira mais eficaz de duplicar uma instância no SQL 2008?

14

Temos uma instância de banco de dados simples com dados suficientes nos bancos de dados para mantê-los úteis, e podemos usá-los para fins de demonstração. Quero colocar uma cópia no meu laptop para que eu possa usá-los no trabalho de desenvolvimento quando Eu não estou no escritório. (As instâncias regulares do banco de dados dev têm cerca de 150 GB, essa instância é de 3 GB)

Qual é o método mais repetível / programável para recriar a instância no meu laptop? Tenho certeza de que terei que executar o instalador novamente para o SqlServer2008 e configurar uma instância, mas depois disso ... Estou pensando em querer eliminar meus bancos de dados antigos todos os meses ou mais e copie todas as coisas novas para o meu laptop, pois minha instância não será alterada no sistema de demonstração nem no laptop. Mas os próprios bancos de dados serão atualizados, com atualizações nos sprocs e similares.

Eu considerei criar scripts para todos os "soltar arquivos de banco de dados; adicionar arquivos de banco de dados {caminho}" e mantê-los em um arquivo em lotes executável de algum tipo, e então eu posso "soltar, excluir, copiar, adicionar", mas me perguntei se havia foi uma maneira melhor do que apenas xcopy e batch?

Estou tentando fazer isso barato (nem sempre tentamos fazer coisas baratas), por isso não estou particularmente interessado em produtos RedGate ou algo parecido. Quero algo que possa manter facilmente em um editor de texto para mim.

jcolebrand
fonte
é uma instância única de banco de dados ou servidor sql com mais de um banco de dados? Suponho que você tenha um servidor sql instalado no laptop e na máquina de desenvolvimento e que tenha um banco de dados; nesse caso, você pode usar backup e restauração. Faça backup da máquina de desenvolvimento db, copie-a para o laptop e restaure, vice-versa ... isso faz sentido?
precisa saber é o seguinte
é o SQL Server Express Edition? ou padrão? O SSIS é uma boa opção para cenários como esse, infelizmente não está disponível nas edições Express e Web.
precisa saber é o seguinte
Desculpe, @Sandy ~ É o SQL Dev 2008. Eu tenho acesso a praticamente tudo o que você pode imaginar, por conta do MSDN.
jcolebrand
O título da pergunta é um pouco confuso "Qual é a maneira mais eficaz de duplicar uma | instância | no SQL 2008?" - instância ou banco de dados?
precisa saber é o seguinte
@ Sandy ~ "Instância" ... na verdade, eu quero a coisa toda.
Jcolebrand

Respostas:

4

Você acertou em cheio na cabeça: copie os arquivos. Eu usei isso com bom efeito.

Eu diria que você precisa definir "barato" para incluir o investimento de tempo para preparar uma solução que não envolva xcopy

gbn
fonte
3

Hum, não tenho certeza se isso ajuda, mas estamos usando um conjunto de scripts para "limpar" um banco de dados de produção e prepará-lo para abuso de desenvolvimento. Estamos pegando todas as grandes tabelas que têm uma coluna datetime e estamos reconstruindo a tabela apenas com o último ano de dados. De um banco de dados completo de cerca de 200 GB, chegamos a cerca de 40 GB para desenvolvimento. Principalmente, estamos gerando scripts dinâmicos para criar arquivos bcp para cada tabela, recriar a tabela (incluindo quaisquer restrições relacionadas) e inserir em massa apenas os dados do ano passado.

Talvez haja ferramentas para fazer isso, mas nossa loja fica barata :-).

Marian
fonte
Sim, seguimos a rota do BCP para muitas coisas, então eu entendo o que você está dizendo, e truncar em algumas dessas coisas seria bom, mas eu já tenho os 3 GB de dados de que preciso, então não estou realmente olhando para adicionar mais lá. Eu só quero copiar a instância inteira e descobrir que há uma maneira de continuar fazendo isso repetidamente. Mas, caso contrário, acho que estou no mesmo rumo do que você está falando, apenas um saco menor.
Jcolebrand
Então repita todas as etapas em lotes :). O SQL possui parâmetros em lote e você pode combinar arquivos em lote com arquivos sql e obter um bom pacote. Criei um pacote personalizado de envio de logs (burro) que está trabalhando em domínios diferentes e toda a preparação do banco de dados é feita em arquivos cmd / sql. Você pode criar uma instância nomeada apenas para seu uso e iniciar / parar o serviço, restaurar o banco de dados, limpá-lo, prepará-lo, fazer backup, enviá-lo para uma pasta específica. Talvez algum trabalho possa ser feito mais rapidamente no PowerShell ... mas não estou familiarizado com isso.
Marian
sim essa é a idéia;)
jcolebrand
@jcolebrand - Talvez uma ferramenta como o Norton Ghost ou o Clonezilla ajudasse? Você precisaria copiar as pastas de backup do prod em algum lugar do seu terreno de jogo, e depois lá fazer toda a diversão (restauração ... corte ... etc). Você não precisa criar scripts para as ações de cópia e manipulará apenas a parte sql :).
Marian
oooooh isso poderia ser útil. Novas vias de consideração.
jcolebrand
0

A maneira mais fácil de atualizar seu esquema para corresponder a esses sistemas é usar uma ferramenta como o Red Gate SQL Compare ou o Embarcadero DB Change Manager.

Existem várias outras ferramentas disponíveis que provavelmente podem fazer a mesma comparação de esquema e até fornecer o DDL para atualizar seu esquema de banco de dados.

Opções

  1. Use uma ferramenta de terceiros
  2. Backup e restauração do banco de dados - pode ser necessário restaurar para uma instância de teste para excluir dados (devido a restrições de espaço no laptop)
  3. Escreva seu próprio script de banco de dados usando o SMO e simplesmente crie um trabalho que faça scripts dos objetos, recrie seu esquema a cada mês / hora que precisar, e use o SSIS para carregar dados nos novos objetos.
johndacostaa
fonte
Como o "Backup e restauração do banco de dados" funciona para a instância? Eu quero manter os dados nessas tabelas porque é um conjunto de dados completo, apenas menor que a produção.
jcolebrand
O SSIS provavelmente me deixaria fazer o que preciso, mas não sei o suficiente sobre isso. Eu deveria investigar mais.
jcolebrand
@ jcolebrand - Sugeri a restauração de backup, basta considerar como mover os dados do sistema ativo para o sistema demo quando você faz coisas como adicionar colunas. No entanto, isso tem a desvantagem que exige uma restauração e a limpeza dos dados antes de outro backup e a restauração / desanexação e conexão.
Johndacostaa