Tips & Trik SQL Server : Solusi Error Saat Attach Database Tanpa File Log (File LDF)

Setiap database di SQL Server memiliki minimal dua file utama yaitu file Data yang memiliki ekstensi file .MDF, dan file Log yang memiliki ekstensi file .LDF. Setiap melakukan transaksi data (insert, update, delete), file Log akan mencatat setiap perintah transaksi tersebut kedalam file LDF. Selanjutnya setelah ada perintah COMMIT, perubahan data akan disimpan ke dalam file MDF.

Untuk kebutuhan tertentu, kadang diperlukan untuk memindahkan lokasi file baik file MDF maupun LDF di SQL Server. Untuk hal tersebut dapat dilakukan dengan cara  mudah yaitu melakukan detach database, kemudian memindahkan file MDF dan file LDF tersebut ke drive atau lokasi lain, dan selanjutnya dilakukan proses attach kembali ke sistem SQL Server. Proses detach maupun attach database bisa dilakukan baik melalui SQL Server Management Studio, maupun melalui console Query.

Tips & Trik SQL Server : Solusi Error Saat Attach Database Tanpa File Log (File LDF) 2

Pernah mengalami Error pada saat Attach file MDF database SQL Server tanpa file LDF? Secara umum Attach File MDF tanpa file LDF tidak akan menjadi masalah, selama transaksi yang terjadi di database normal, atau sudah tercommit semua. Namun apabila karena suatu hal server rusak, dan yang bisa dilakukan hanya bisa mengcopy file MDF, bisa jadi ketika attach file MDFakan menemui pesan error.

Jangan khawatir, berikut solusi untuk memperbaiki database SQL Server yang hanya memiliki file MDF tanpa file LDF.

  • Siapkan file MDF dari database yang akan diperbaiki. Untuk selanjutnya file MDF tersebut dalam tutorial ini akan disebut file MDF original
  • Buat database baru dengan nama sama dengan file MDF original, baik MDF maupun LDF-nya
  • Stop SQL Server, masuk ke lokasi file MDF. Rename file MDF yang ada, dan copy-kan file MDF yang original yang ke lokasi tersebut. Delete File LDF yang ada
  • Start SQL Server
  • Sekarang database anda akan di mark menjadi Suspect
  • Update sysdatabases ke Emergency Mode. Perintah ini bermaksud agar tidak menggunakan file LOG pada saat start up
     Sp_configure "allow updates", 1
     go
     Reconfigure with override
     GO
     Update sysdatabases set status = 32768 where name = 'DbName Yg Rusak'
     go
     Sp_configure "allow updates", 0
     go
     Reconfigure with override
     GO
  • Restart sql server. dan sekarang database akan masuk ke Emergency Mode
  • Kemudian eksekusi perintah berikut, untuk membuat log baru.
     DBCC REBUILD_LOG(dbname,'c:\dbname.ldf')
     Execute sp_resetstatus <dbname>
  • Restart SQL server dan walaaaa…database Anda sudah online.

Selamat mencoba!

Mustofa

Manager Edukasi Inixindo Jogja