«

»

nov 23

Atachar base sem o arquivo de TLOG

 

 

Já me deparei diversas vezes com situações onde não tinha backup nem arquivo de transaction log, somente uma cópia do arquivo de dados (mdf). Na maioria das vezes esta cópia salvou a pele de meio mundo, então vamos aprender uma das formas de como atachar uma base sem o arquivo de transaction logs.

 

Vamos utilizar a procedure sp_attach_single_file_db que possui dois parâmetros:

 

@dbname – o nome que esta base vai assumir ao ser atachada;
@physname – o caminho onde se encontra o arquivo de dados (mdf);

 

Veja como fica o script:

 

EXEC sp_attach_single_file_db @dbname=’AdventureWorks2008R2′,
@physname=’C:\Program Files\Microsoft SQL Server\MSSQL\Data\AdventureWorks2008R2_Data.mdf’
GO

 

Não se assuste. Esperamos uma mensagem de falha. O resultado deve ser como o da imagem abaixo:

 

Você somente é avisado que o arquivo de TLog utilizado anteriormente não está disponível mas um outro está sendo criado no local padrão do SQL. Veja a mensagem completa:

File activation failure. The physical file name “C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\AdventureWorks2008R2_Log.ldf” may be incorrect.

New log file ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\AdventureWorks2008R2_log.LDF’ was created.

 

Portanto, a base foi atachada corretamente:

 

Também é possível fazer pelo SSMS mas é sempre mais legal fazer com query.

Não se esqueça de digitar a query ao invés de copiar e colar, assim você memoriza os nomes de procedures, tabelas, etc..

3 comentários

  1. Fabio

    Boa dica… valeu

  2. Angelo Maximo

    Belo artigo, Mercante. Essa com certeza é daquelas dicas que salvam vidas.

  3. Luiz Mercante

    Opa, o bom de quem some é que dia ou outro aparece! rs

    Obrigado!

Deixe uma resposta