Tenho várias centenas (atualmente 466, mas sempre crescendo) tabelas que preciso copiar de um servidor para outro.
Eu nunca tive que fazer isso antes, então não tenho certeza de como abordá-lo. Todas as tabelas estão no mesmo formato:Cart<Eight character customer number>
Isso faz parte de um projeto maior do qual estou fundindo todas essas Cart<Number>
tabelas em uma única Carts
tabela, mas essa é uma questão totalmente diferente.
Alguém tem um método de prática recomendada que eu possa usar para copiar todas essas tabelas? Os nomes dos bancos de dados em ambos os servidores são os mesmos, se isso ajudar. E como eu disse anteriormente, eu tenho a sa
conta para que eu possa fazer o que for necessário para obter os dados de A para B. Ambos os servidores também estão no mesmo farm de servidores.
Aqui está uma abordagem rápida e suja que precisa apenas de um servidor vinculado, em cada direção, com privilégios suficientes, compatibilidade de agrupamento e acesso a dados ativado. Você executa isso no servidor vinculado de origem para gerar o SQL dinâmico que será executado no servidor vinculado de destino.
Você pode usar a tarefa "Exportar dados" do SQL Server Management Studio. Clique com o botão direito do mouse no banco de dados no SSMS, selecione Tarefas e, em seguida, "Exportar dados". Ele lançará um assistente interativo que permitirá copiar tabelas de um servidor para outro, embora você mesmo tenha que recriar os índices. O assistente cria um pacote SSIS temporário (embora você também possa optar por salvá-lo) e é relativamente rápido.
Você pode usar BCP OUT e BULK INSERT INTO no banco de dados de destino. Você pode usar este script
Você também pode usar o SSIS (importação/exportação de dados) para fazer a transferência de dados.
Se você deseja que algo que possa ser roteirizado seja facilmente executável novamente enquanto você testa isso e faz pequenas alterações, confira minha resposta aqui:
Importar dados de um banco de dados para outro script
Essa resposta descreve o uso de um procedimento armazenado SQLCLR que faz uso da
SqlBulkCopy
classe em .NET. O uso desse procedimento armazenado pode ser feito em um cursor que percorre as tabelas. Isso permite a edição fácil do processo, bem como a contabilização de novas tabelas ou a exclusão fácil de uma ou mais tabelas por meio de umaWHERE
condição na consulta do cursor.