Eu gostaria de ETL uma tabela de uma instância do SQL Server para outra instância do SQL Server. Não quero criar um pacote SSIS. eu tentei
- para extrair os dados usando uma Tabela Externa no destino (ou seja, eu uso a Tabela Externa para criar uma cópia local, por exemplo, com
SELECT INTO #Hello FROM MyExternalTable
). - Servidor vinculado com o uso
SELECT * INTO #HELLO FROM MyLinkedServer.MyDB.dbo.MyTable
- Eu também tenho usado
OPENROWSET
.
Todos eles são executados em thread único, o que posso ver nos planos de execução. Eu não usei bcp
, mas parece que primeiro preciso salvar a tabela em um arquivo e depois lê-la do arquivo e carregá-la. Portanto, não acho que seja a ferramenta correta para essa tarefa. Qual é a abordagem mais rápida para copiar uma tabela de uma instância do SQL Server para outra instância do SQL Server?
Conforme determinado nos comentários, como você não precisa aplicar nenhuma transformação, isso é essencialmente apenas uma cópia de tabela, então você pode querer considerar o uso de Replicação, especialmente para apenas uma única tabela.
Eu recomendo olhar para replicação transacional unidirecional . Está disponível mesmo na Standard Edition e manterá os dados atualizados quase em tempo real.
Embora a sincronização de instantâneo inicial possa demorar um pouco para uma tabela de aproximadamente 30 GB, essa pode nem ser a metodologia mais rápida para copiar a tabela uma vez. Mas, como ele manterá os dados sincronizados à medida que forem alterados, poderá evitar que você tenha que fazer uma cópia completa da tabela novamente no futuro. Portanto, é sem dúvida a solução mais eficiente a longo prazo.