como copiar o banco de dados do sql server no mesmo servidor

2

Eu tenho um SQL Server 2008 e quero fazer uma cópia de um banco de dados, então eu tenho uma segunda versão do banco de dados para testar no mesmo servidor.

O assistente de cópia de banco de dados não é capaz de copiar o banco de dados, ele sempre envia mensagens de erro engraçadas sobre objetos ausentes (usando cópia SMO).

Quando tento fazer um backup e restaurá-lo com um nome de banco de dados diferente, ele ainda mantém os nomes de arquivo do banco de dados original e substitui isso (travando o banco de dados original).

Então, como copio um banco de dados SQL? Desligar o SQL Server, copiar os arquivos físicos e anexá-los? Talvez uma ferramenta de linha de comando para cópia de banco de dados? Não deveria haver uma maneira fácil de fazer uma cópia?

    
por Sam 18.10.2013 / 16:34

2 respostas

3

Primeiro você precisa determinar os nomes lógicos de seus arquivos de banco de dados executando sp_helpdb 'DBNAME' e observe a coluna [Name]. Você precisa identificar os dados e arquivos de log. Em seguida, você precisa executar um backup completo do banco de dados de copy_only. A opção somente cópia não é estritamente necessária, mas impede que a cadeia de logs seja quebrada no banco de dados original. Em seguida, você precisa executar uma restauração de banco de dados usando a opção MOVE para fornecer novos nomes aos arquivos físicos reais para que eles não entrem em conflito com o banco de dados original.

Aqui está um exemplo que copia o banco de dados [Scratch] para o banco de dados [Scratch_New]. Você precisará ajustar o backup real e os caminhos de dados com base na sua instalação do SQL.

sp_helpdb 'Scratch'

-- From the resultset of this procedure I learned that the logical 
-- data file name is 'Scratch' and the logical log file name is 'Scratch_log'.

BACKUP DATABASE [Scratch] 
TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak' WITH COPY_ONLY 

RESTORE DATABASE [Scratch_New] 
FROM DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak'
  WITH MOVE 'Scratch' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew.mdf',
       MOVE 'Scratch_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew_Log.ldf'; 
    
por 18.10.2013 / 17:27
0

Eu uso o SSMS para clonar os bancos de dados.

  1. Crie um backup do banco de dados que você deseja copiar e chame-o, por exemplo OriginalDB
  2. Clique com o botão direito do mouse em OriginalDB, selecione task e, em seguida, Restore DB .
  3. Na opção Destination for restore , coloque o novo nome do banco de dados (por exemplo, NewDB) e na opção Source for restore selecione OriginalDB.

Isso criará um NewDB que é uma cópia exata do OriginalDB.

    
por 08.03.2017 / 15:17