Tag: Detach Database

  • Steps to Attach a SQL Server database without transaction log file

    Problem: There could be situation where you missed the database transaction log file(.LDF) and you have only data file (.MDF). You can attach the database using below solution.

    Solution: In the below script I have created the database,dropped its log file and created the database with the .mdf file.

    --created database with .mdf and .ldf file
    CREATE DATABASE [singleFileDemo] ON  PRIMARY 
    ( NAME = N'singleFileDemo', FILENAME = N'L:\singleFileDemo.mdf' , SIZE = 2048KB , FILEGROWTH = 10240KB )
     LOG ON 
    ( NAME = N'singleFileDemo_log', FILENAME = N'F:\singleFileDemo_log.ldf' , SIZE = 1024KB , FILEGROWTH = 5120KB )
    GO
    
    --inserting data into database
    use singleFileDemo
    create table tb1 (name varchar(10))
    
    --inserting records
    insert into tb1 values('Jugal')
    go 10;
    
    --deleting the log file
    --detaching the database file
    USE [master]
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'singleFileDemo'
    GO
    
    -- now next step is delete the file manually or you can do it from command prompt
    EXEC xp_cmdshell 'del F:\singleFileDemo_log.ldf'
    
    -- script to attach the database 
    USE [master]
    GO
    CREATE DATABASE [singleFileDemo] ON 
    ( FILENAME = N'L:\singleFileDemo.mdf' )
    FOR ATTACH
    GO 
    

    When you will execute the CREATE DATABASE FOR Attach script you will get the below warning message.

    File activation failure. The physical file name "F:\singleFileDemo_log.ldf" may be incorrect.
    New log file 'F:\singleFileDemo_log.LDF' was created.

    Once the database is ready execute the DBCC CHECKDB for any error.