Exportar os dados da tabela de um servidor SQL para outro

tenho dois servidores SQL (ambos versão de 2005).

Quero migrar várias mesas de uma para outra.

Eu tentei.
  • no servidor de origem, carreguei com o botão direito na base de dados, seleccionada Tasks/Generate scripts. O problema é que em Table/View options não há nenhuma opção Script data.

  • Então eu usei Script Table As/Create script para gerar arquivos SQL, a fim de criar as tabelas no meu servidor de destino. Mas ainda preciso de todos os dados.

Depois tentei. utilizar:

SELECT * 
INTO [destination server].[destination database].[dbo].[destination table] 
FROM [source server].[source database].[dbo].[source table]

Mas tenho um erro:

O objecto contém mais do que o número máximo de prefixos. Máximo é 2.

Alguém me pode indicar a solução certa para o meu problema?

Author: marc_s, 2012-06-13

11 answers

Tenta isto:

  1. Crie a sua tabela no servidor de destino usando os seus programas a partir do Passo Script Table As / Create Script

  2. No servidor de destino, poderá então emitir uma declaração T-SQL:

    INSERT INTO dbo.YourTableNameHere
       SELECT *
       FROM [SourceServer].[SourceDatabase].dbo.YourTableNameHere
    
Isto deve funcionar muito bem.
 47
Author: marc_s, 2012-06-13 06:24:17

Só para mostrar mais uma opção (para o servidor SQL 2008 e acima):

  1. carregue com o botão direito na Base de dados -> seleccione 'Tarefas' - > seleccione 'gerar programas'
  2. Seleccione os objectos específicos da base de dados que deseja copiar. Digamos uma ou mais mesas. Carregue Em Next
  3. Carregue em Avançado e desloque para 'tipos de dados para script' e escolha 'esquema e dados'. Carregue em OK
  4. Escolha onde gravar o programa gerado e prossiga clicando em Seguinte
 34
Author: Konstantin, 2017-11-09 13:10:27

Existe uma opção de tabela de programas nas tarefas/gerar programas! Também o perdi no início! Mas você pode gerar scripts de inserção lá (característica muito agradável, mas em um lugar muito pouco intuitivo).

Quando chegar ao passo" definir as opções de programação "vá para a página" Avançado".

Passos descritos aqui (imagens podem entender, mas eu escrevo lá em Letão).

 9
Author: Jānis, 2012-06-13 06:24:16

Tente usar o servidor SQL Assistente de importação e exportação (sob Tarefas - > exportar dados).

Ele oferece para criar as tabelas na base de dados de destino. Enquanto que, como você já viu, o Assistente de scripting só pode criar a estrutura da tabela.

 5
Author: Damien_The_Unbeliever, 2012-06-13 06:25:48

Se as tabelas já foram criadas usando os scripts, então há outra maneira de copiar os dados é usando o comando BCP para copiar todos os dados do seu servidor de origem para o seu servidor de destino

Para exportar os dados da tabela em um arquivo de texto no servidor de código:

bcp <database name>.<schema name>.<table name> OUT C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password> 

Para importar os dados da tabela de um ficheiro de texto no servidor de destino:

bcp <database name>.<schema name>.<table name> IN C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
 5
Author: praveen, 2016-02-05 18:11:25

Não pode escolher um servidor de origem / destino.

Se as bases de dados estiverem no mesmo servidor, pode fazer isto:

Se as colunas da tabela forem iguais (incluindo a ordem! então você pode fazer isso:

INSERT INTO [destination database].[dbo].[destination table]
SELECT *
FROM [source database].[dbo].[source table]

Se quiser fazer isto assim que puder salvaguardar/restaurar a base de dados de origem. Se precisar de fazer isto mais vezes, recomendo-lhe que inicie um projecto SSIS onde defina a base de dados de código (aí poderá escolher qualquer ligação em qualquer servidor) e crie um projecto onde se mova os seus dados estão aí. Veja mais informações aqui: http://msdn.microsoft.com/en-us/library/ms169917%28v=sql.105%29.aspx

 2
Author: YvesR, 2012-06-13 06:22:42
Só por Diversão.

Como não fui capaz de criar um servidor ligado e como a ligação ao servidor de produção não foi suficiente para usar {[[0]} fiz o seguinte:

  • criou uma cópia de segurança da base de dados do servidor de Produção
  • Restaurou a base de dados no meu servidor de testes.
  • executou a inserção nas declarações
É uma solução de backdoor, mas como tinha problemas, funcionou comigo.

Desde que criei tabelas vazias usando SCRIPT TABLE AS / CREATE em ordem para transferir todas as chaves e índices que eu não poderia usar SELECT INTO. SELECT INTO só funciona se as tabelas não existirem no local de destino, mas não copiar Chaves e índices, então você tem que fazer isso manualy. A desvantagem de usar a declaração {[[0]} é que você tem que fornecer manualy com todos os nomes de colunas, além de que pode lhe dar alguns problemas se algumas restrições de chave estrangeiras falham.

Graças a todos os anwsers, existem algumas grandes soluções, mas decidi aceitar marc_s anwser.
 2
Author: no9, 2012-06-14 04:21:00

Isso pode ser feito através de "Dados De Importação/Exportação..."in SQL Server Management Studio

 2
Author: Vil, 2015-03-28 01:06:30

Para copiar dados da fonte para o destino:

use <DestinationDatabase>
select * into <DestinationTable> from <SourceDataBase>.dbo.<SourceTable>
 1
Author: David Brabant, 2012-06-13 06:23:06
Isto é um pouco uma solução de "go around", mas funcionou para mim. espero que funcione para este problema também para outros.

Você pode executar a pesquisa SQL selecionada na tabela que você deseja exportar e gravar o resultado como .xls em você dirigir.

Agora crie a tabela que deseja adicionar dados com todas as colunas e índices. Isso pode ser feito facilmente com o clique direito na tabela real e selecionando a opção Criar para script.

Agora pode carregar com o botão direito no DB onde quiser para adicionar a sua tabela e selecionar as tarefas>importar .

O Assistente de exportação de importação abre e selecciona o seguinte.Selecione o Microsoft Excel como fonte de dados de entrada e, em seguida, navegar e selecionar o .ficheiro xls que gravou anteriormente.

Agora seleccione o servidor de destino e também a tabela de destino que já criámos.

Nota: Se existir algum campo baseado na identidade, na tabela de destino poderá querer remover a propriedade da identidade, uma vez que estes dados também serão inseridos . Então, se tivesses isto ... um como propriedade de identidade só então ele iria errar para fora do processo de importação.

Agora carregue em Seguinte e carregue em Terminar e irá mostrar-lhe quantos registos estão a ser importados e retornará com sucesso se não ocorrerem erros.

 1
Author: sinod, 2014-07-16 20:08:43

Outra opção se a tiver disponível: c#. net.em particular, a Microsoft.SqlServer.Gestao.Namespace Smo.

Uso um código semelhante ao seguinte num componente de Script de uma das minhas embalagens SSIS.

var tableToTransfer = "someTable";
var transferringTableSchema = "dbo";

var srvSource = new Server("sourceServer");
var dbSource = srvSource.Databases["sourceDB"];

var srvDestination = new Server("destinationServer"); 
var dbDestination = srvDestination.Databases["destinationDB"];

var xfr = 
    new Transfer(dbSource) {
        DestinationServer = srvDestination.Name,
        DestinationDatabase = dbDestination.Name,
        CopyAllObjects = false,
        DestinationLoginSecure = true,
        DropDestinationObjectsFirst = true,
        CopyData = true
    };

xfr.Options.ContinueScriptingOnError = false; 
xfr.Options.WithDependencies = false; 

xfr.ObjectList.Add(dbSource.Tables[tableToTransfer,transferringTableSchema]);
xfr.TransferData();

Acho que tive de procurar e adicionar explicitamente a Microsoft.SqlServer.Biblioteca Smo para as referências. Mas fora isso, isto tem corrido bem para mim.

actualizar: o espaço de nomes e as bibliotecas eram mais complicados do que eu lembrar.

Para as bibliotecas, adicionar referências a:

  • Microsoft.SqlServer.Smo.dll
  • Microsoft.SqlServer.Fumado.dll
  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Gestao.Kit.Sfc.dll

Para os espaços de nomes, adicionar:

  • Microsoft.SqlServer.Gestao.Frequentes
  • Microsoft.SqlServer.Gestao.Smo
 0
Author: pwilcox, 2017-12-01 21:13:35