Há uma grande tabela (5-6 milhões de registros). Tenho que mover 90% dos registros antigos para outro banco de dados (tabela). Solução?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Algumas adições à sugestão de Rolando.
Se você estiver limpando a tabela antiga, bem como preenchendo a nova, poderá usar a cláusula OUTPUT. Esteja atento ao potencial de crescimento de log, considere uma abordagem de loop/lote se isso puder ser um problema.
BCP é uma alternativa útil para estar ciente. Observe que isso está usando a sintaxe SQLCMD.
Para o SQL Server, o problema real é evitar o registro das linhas excluídas.
Minha proposta é
configurar um segundo banco de dados no modo de recuperação simples. Copie toda a tabela com
Se o servidor de destino for SQL Server da mesma versão, você poderá mover os dados por backup e restauração.
Em outros casos, escolha alguma opção de cópia em massa.
EDITAR:
Embora seja hora de aprender sobre tabelas particionadas, isso parece ser uma opção apenas para Enterprise Edition.
Se a TableA for muito grande, você pode usar operações em massa e o utilitário bcp
consulte o artigo Sobre operações de importação e exportação em massa .
Tive que mover uma tabela com 4 bilhões de linhas para um banco de dados diferente no mesmo servidor usando o mesmo armazenamento. Não havia armazenamento suficiente para duas cópias da mesa, então tive que movê-la um pouco de cada vez e limpar o armazenamento conforme avançava. Então eu escrevi este código. Observação: é melhor ter @IterationsToRun mais alto e @RecordsToCopy mais baixo porque isso mantém os logs de transação mais limpos e faz com que pare mais rápido se você forçar uma parada. Certifique-se de não mover tantos registros a ponto de ficar sem espaço em disco antes de reduzir o banco de dados.