Atachar base sem o arquivo de TLOG » SQL Dicas
« Listar todos os arquivos da instância
SQL Internal Ops Conference – Agenda »
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'
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..