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.
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
Abra o Microsoft SQL Management Studio .
- Backup do banco de dados original para o arquivo .BAK (db -> Task -> Backup).
- Crie banco de dados vazio com novo nome (clone). Observe os comentários abaixo, pois isso é opcional.
- Clique para clonar banco de dados e abrir a caixa de diálogo de restauração (ver imagem)
- Selecione o dispositivo e adicione o arquivo de backup da etapa 3.
- Alterar o destino para testar o banco de dados
- 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.)
- 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:
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
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 )
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