sql-server - servidor - exportar dados sql server management studio




Como posso clonar um banco de dados do SQL Server no mesmo servidor no SQL Server 2008 Express? (9)

Eu tenho um sistema MS SQL Server 2008 Express que contém um banco de dados que eu gostaria de 'copiar e renomear' (para fins de teste), mas não tenho conhecimento de uma maneira simples de conseguir isso.

Eu notei que na versão R2 do SQL Server há um assistente de banco de dados de cópia, mas infelizmente não posso atualizar.

O banco de dados em questão é em torno de um show. Eu tentei restaurar um backup do banco de dados que eu quero copiar em um novo banco de dados, mas sem sorte.


  1. Instale o Microsoft SQL Management Studio, que você pode baixar gratuitamente no site da Microsoft:

    Versão 2008

    O Microsoft SQL Management Studio 2008 faz parte do SQL Server 2008 Express com Advanced Services

    Versão 2012

    Clique no botão de download e verifique ENU\x64\SQLManagementStudio_x64_ENU.exe

    Versão 2014

    Clique no botão de download e verifique MgmtStudio 64BIT\SQLManagementStudio_x64_ENU.exe

  2. Abra o Microsoft SQL Management Studio .

  3. Backup do banco de dados original para o arquivo .BAK (db -> Task -> Backup).
  4. Crie banco de dados vazio com novo nome (clone). Observe os comentários abaixo, pois isso é opcional.
  5. Clique para clonar banco de dados e abrir a caixa de diálogo de restauração (ver imagem)
  6. Selecione o dispositivo e adicione o arquivo de backup da etapa 3.
  7. Alterar o destino para testar o banco de dados
  8. Altere o local dos arquivos do banco de dados, ele deve ser diferente do original. Você pode digitar diretamente na caixa de texto, basta adicionar o postfix. (NOTA: O pedido é importante. Marque a caixa de seleção e altere os nomes dos arquivos.)
  9. Verifique WITH REPLACE e WITH KEEP_REPLICATION

A solução, com base neste comentário: https://.com/a/22409447/2399045 . Basta definir as configurações: nome do banco de dados, pasta temporária, pasta de arquivos db. E depois de executar, você terá a cópia do banco de dados com nome no formato "sourceDBName_aaaa-mm-dd".

-- Settings --
-- New DB name will have name = sourceDB_yyyy-mm-dd
declare @sourceDbName nvarchar(50) = 'MyDbName';
declare @tmpFolder nvarchar(50) = 'C:\Temp\'
declare @sqlServerDbFolder nvarchar(100) = 'C:\Databases\'

--  Execution --
declare @sourceDbFile nvarchar(50);
declare @sourceDbFileLog nvarchar(50);
declare @destinationDbName nvarchar(50) = @sourceDbName + '_' + (select convert(varchar(10),getdate(), 121))
declare @backupPath nvarchar(400) = @tmpFolder + @destinationDbName + '.bak'
declare @destMdf nvarchar(100) = @sqlServerDbFolder + @destinationDbName + '.mdf'
declare @destLdf nvarchar(100) = @sqlServerDbFolder + @destinationDbName + '_log' + '.ldf'

SET @sourceDbFile = (SELECT top 1 files.name 
                    FROM sys.databases dbs 
                    INNER JOIN sys.master_files files 
                        ON dbs.database_id = files.database_id 
                    WHERE dbs.name = @sourceDbName
                        AND files.[type] = 0)

SET @sourceDbFileLog = (SELECT top 1 files.name 
                    FROM sys.databases dbs 
                    INNER JOIN sys.master_files files 
                        ON dbs.database_id = files.database_id 
                    WHERE dbs.name = @sourceDbName
                        AND files.[type] = 1)

BACKUP DATABASE @sourceDbName TO DISK = @backupPath

RESTORE DATABASE @destinationDbName FROM DISK = @backupPath
WITH REPLACE,
   MOVE @sourceDbFile     TO @destMdf,
   MOVE @sourceDbFileLog  TO @destLdf

Clique com o botão direito do mouse no banco de dados para clonar, clique em Tasks , clique em Copy Database... Siga o assistente e pronto.


Este é o script que eu uso. Um pouco complicado, mas funciona. Testado no SQL Server 2012.

DECLARE @backupPath nvarchar(400);
DECLARE @sourceDb nvarchar(50);
DECLARE @sourceDb_log nvarchar(50);
DECLARE @destDb nvarchar(50);
DECLARE @destMdf nvarchar(100);
DECLARE @destLdf nvarchar(100);
DECLARE @sqlServerDbFolder nvarchar(100);

SET @sourceDb = 'db1'
SET @sourceDb_log = @sourceDb + '_log'
SET @backupPath = 'E:\tmp\' + sourceDb + '.bak' --ATTENTION: file must already exist and SQL Server must have access to it
SET @sqlServerDbFolder = 'E:\DB SQL\MSSQL11.MSSQLSERVER\MSSQL\DATA\'
SET @destDb = 'db2'
SET @destMdf = @sqlServerDbFolder + @destDb + '.mdf'
SET @destLdf = @sqlServerDbFolder + @destDb + '_log' + '.ldf'

BACKUP DATABASE @sourceDb TO DISK = @backupPath

RESTORE DATABASE @destDb FROM DISK = @backupPath
WITH REPLACE,
   MOVE @sourceDb     TO @destMdf,
   MOVE @sourceDb_log TO @destLdf

No SQL Server 2008 R2, faça backup do banco de dados como um arquivo em uma pasta. Em seguida, escolha a opção de restauração que aparece na pasta "Banco de dados". No assistente, insira o novo nome que você deseja no banco de dados de destino. E escolha restaurar o arquivo frrom e use o arquivo que você acabou de criar. Eu fiz isso e foi muito rápido (meu DB era pequeno, mas ainda) Pablo.


Outra maneira que faz o truque usando o assistente de importação / exportação , primeiro criar um banco de dados vazio, escolha a fonte que é o seu servidor com o banco de dados de origem e, em seguida, no destino, escolha o mesmo servidor com o banco de dados de destino você criou no início), depois clique em

Ele criará todas as tabelas e transferirá todos os dados para o novo banco de dados,


Se o banco de dados não for muito grande, você poderá examinar os comandos 'Banco de Dados de Script' no SQL Server Management Studio Express, que estão em um menu de contexto do próprio item do banco de dados no explorer.

Você pode escolher o que tudo para roteiro; você quer os objetos e os dados, é claro. Você salvará o script inteiro em um único arquivo. Em seguida, você pode usar esse arquivo para recriar o banco de dados; apenas certifique-se de que o comando USE no topo esteja configurado para o banco de dados apropriado.


Usando o MS SQL Server 2012, você precisa executar 3 etapas básicas:

  1. Primeiro, gere o arquivo .sql contendo apenas a estrutura do banco de dados de origem

    • clique com o botão direito do mouse no banco de dados de origem e, em seguida, em Tarefas e, em seguida, em Gerar Scripts
    • siga o assistente e salve o arquivo .sql localmente
  2. Em segundo lugar, substitua o banco de dados de origem pelo arquivo de destino no arquivo .sql

    • Clique com o botão direito do mouse no arquivo de destino, selecione Nova consulta e Ctrl-H ou ( Editar - Localizar e substituir - Substituição rápida )
  3. Finalmente, preencha com dados

    • Clique com o botão direito do mouse no banco de dados de destino e selecione Tarefas e Importar Dados
    • Fonte de dados suspensa definida como " .net provedor de dados da estrutura para o SQL server " + define o campo de texto da cadeia de conexão em DATA ex: Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
    • faça o mesmo com o destino
    • verifique a tabela que deseja transferir ou marque a caixa "source: ..." para verificar todos eles

Você terminou.


Você pode tentar desanexar o banco de dados, copiar os arquivos para novos nomes em um prompt de comando e anexar os dois bancos de dados.

No SQL:

USE master;
GO 
EXEC sp_detach_db
    @dbname = N'OriginalDB';
GO

No prompt de comando (eu simplifiquei os caminhos de arquivo por causa deste exemplo):

copy c:\OriginalDB.mdf c:\NewDB.mdf
copy c:\OriginalDB.ldf c:\NewDB.ldf

No SQL novamente:

USE master;
GO
CREATE DATABASE OriginalDB
    ON (FILENAME = 'C:\OriginalDB.mdf'),
       (FILENAME = 'C:\OriginalDB.ldf')
    FOR ATTACH;
GO
CREATE DATABASE NewDB
    ON (FILENAME = 'C:\NewDB.mdf'),
       (FILENAME = 'C:\NewDB.ldf')
    FOR ATTACH;
GO




sql-server-2008-express