Senin, 10 Desember 2012

Membuat ulang database MSDB yang rusak

Jika anda kebetulan menemukan masalah kerusakan database MSDB pada SQL Server, cara umum untuk mengatasinya adalah .. restore database MSDB dari backup yang sudah ada, namun bagaimana jika tidak Anda tidak memiliki backup database tersebut?

Cara yang dapat anda tempuh adalah membuat ulang database MSDB tersebut ..

Berikut instruksinya ..


  1. Stop servis SQL Server anda
  2. Dari CMD.exe, masuk lah ke folder "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn" lalu jalankan perintah "sqlservr.exe -c -T3608"
  3. Jalankan Query Analyzer (MSSQL 2000) atau sqlcmd.exe dan jalankan perintah berikut "EXEC master.dbo.sp_detach_db @dbname = N'msdb'; GO;"
  4. Segera pindahkan file database MSDB yang bernama msdbdata.mdf dan msdblog.ldf dari folder "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data" ke folder lain (misalkan C:\temp)
  5. Jalankan script instmsdb.sql yang terdapat pada folder "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install"
  6. Hentikan servis SQL Server dari jendela CMD.exe yang sebelumnya
  7. Aktifkan kembali servis SQL Server secara normal.

Bagaimana memperbaiki database SQL Server yang bermasalah dengan DBCC CheckDB ?

Berikut adalah perintah yang dapat anda pakai jika menemui masalah dengan database anda

ALTER DATABASE nama_database SET SINGLE_USER
GO
DBCC CHECKDB (nama_database, REPAIR_REBUILD)
GO
ALTER DATABASE nama_database SET MULTI_USER
GO

DBCC menawarkan 2 jenis mode, yakni

  • REPAIR_REBUILD, yang mana memperbaiki beberapa kerusakan minor dan tidak ada data yang hilang dari aksi ini.
  • REPAIR_ALLOW_DATA_LOSS, mode ini mencoba memperbaiki data dan struktur database, namun ada kemungkinan terjadi kehilangan data dari aksi ini


Ada beberapa hal yang harus diperhatikan dari perintah ini, yakni

  • Pada kebanyakan kasus, pesan kesalahan yang ditampilkan oleh DBCC CHECKDB, lebih baik diperbaiki dengan backup database yang diketahui dalam keadaan bagus.
  • Proses perbaikan data dengan DBCC CHECKDB hanya dapat berjalan pada mode SINGLE_USER
  • Jika opsi AUTO_UPDATE_STATISTICS_ASYNC pada database dalam keadaan ON, maka anda tidak akan dapat meletakkan database dalam mode single-user, karena thread background dipakai untuk melakukan pembaharuan statistik memakai koneksi tersendiri ke database.
Namun apapun itu ceritanya, sebelum melakukan aksi perbaikan pastikan anda melakukan backup database terlebih dahulu untuk mengantisipasi hal yang tidak diinginkan.