- Beranda
- Komunitas
- Tech
- Programmer Forum
Cara Mengatasi Database ‘In Recovery’ Pada SQL Server 2008


TS
f415al15
Cara Mengatasi Database ‘In Recovery’ Pada SQL Server 2008
Beberapa saat yang lalu, ane pernah mengalami masalah gan di database SQL Server 2008. Ketika sedang melakukan proses restart services SQL Server, tanpa diketahui sebabnya, aplikasi yang mengarah ke database tersebut tidak bisa running
. Setelah ane masuk ke SSMS (SQL Server Management Studio), ternyata status database bertuliskan “Database (In Recovery)” dan tidak bisa di akses .
Panik. Ya itu satu kata singkat yang bisa menggambarkan suasana hati ane saat itu
. Karena baru pertama kali menemui kasus tersebut. Seperti biasa, ane menggunakan senjata pamungkas yaitu mencari informasi di Google
. Dan berikut ini adalah solusi untuk mengatasi masalah tersebut di atas :
1. Don’t Panic.
Jangan panik
, karena segala sesuatu jika dilakukan dengan ceroboh pasti akan berakibat fatal.
2. Disable User Login
Masuk ke SSMS dan disable semua user login yang mengarah ke database terkait.
3. Tunggu.
Selama status database masih bertuliskan ‘In Recovery’, jangan lakukan proses apapun. Termasuk restart services SQL Server. Karena jika services SQL Server di restart, maka proses ‘In Recovery’ akan dimulai dari awal lagi. Dan tentunya akan membuang waktu cukup lama.
4. Gunakan Script
Terkadang kita belum tahu persis kapan proses ‘In Recovery’ itu selesai. Untuk mengetahui proses tersebut, maka kita perlu gunakan script di SSMS sebagai berikut
:
DECLARE @DBName VARCHAR(64) = ‘NamaDatabase’
DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
INSERT INTO @ErrorLog
EXEC sys.xp_readerrorlog 0, 1, ‘Recovery of database’, @DBName
SELECT TOP 5
[LogDate]
,SUBSTRING([TEXT], CHARINDEX(‘) is ‘, [TEXT]) + 4,CHARINDEX(‘ complete (‘, [TEXT]) – CHARINDEX(‘) is ‘, [TEXT]) – 4) AS PercentComplete
,CAST(SUBSTRING([TEXT], CHARINDEX(‘approximately’, [TEXT]) + 13,CHARINDEX(‘ seconds remain’, [TEXT]) – CHARINDEX(‘approximately’, [TEXT]) – 13) AS FLOAT)/60.0 AS MinutesRemaining
,CAST(SUBSTRING([TEXT], CHARINDEX(‘approximately’, [TEXT]) + 13,CHARINDEX(‘ seconds remain’, [TEXT]) – CHARINDEX(‘approximately’, [TEXT]) – 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
,[TEXT]
FROM @ErrorLog ORDER BY [LogDate] DESC
Kemudian klik tombol Execute, maka akan tampil progress waktu ‘In Recovery’ terhadap database yang terkait. Tunggu hingga proses tersebut selesai dan refresh database terkait. Biasanya setelah statusnya sudah 99%, database yang bermasalah tadi sudah bisa di akses kembali.
Semoga bermanfaat
Untuk troubleshooting & tutorial tentang SQL Server 2008 yang lain, agan2 bisa mampir di blog ane : http://infrasolutions.wordpress.com/. Cekidot

Panik. Ya itu satu kata singkat yang bisa menggambarkan suasana hati ane saat itu


1. Don’t Panic.
Jangan panik

2. Disable User Login
Masuk ke SSMS dan disable semua user login yang mengarah ke database terkait.
3. Tunggu.
Selama status database masih bertuliskan ‘In Recovery’, jangan lakukan proses apapun. Termasuk restart services SQL Server. Karena jika services SQL Server di restart, maka proses ‘In Recovery’ akan dimulai dari awal lagi. Dan tentunya akan membuang waktu cukup lama.
4. Gunakan Script
Terkadang kita belum tahu persis kapan proses ‘In Recovery’ itu selesai. Untuk mengetahui proses tersebut, maka kita perlu gunakan script di SSMS sebagai berikut

DECLARE @DBName VARCHAR(64) = ‘NamaDatabase’
DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
INSERT INTO @ErrorLog
EXEC sys.xp_readerrorlog 0, 1, ‘Recovery of database’, @DBName
SELECT TOP 5
[LogDate]
,SUBSTRING([TEXT], CHARINDEX(‘) is ‘, [TEXT]) + 4,CHARINDEX(‘ complete (‘, [TEXT]) – CHARINDEX(‘) is ‘, [TEXT]) – 4) AS PercentComplete
,CAST(SUBSTRING([TEXT], CHARINDEX(‘approximately’, [TEXT]) + 13,CHARINDEX(‘ seconds remain’, [TEXT]) – CHARINDEX(‘approximately’, [TEXT]) – 13) AS FLOAT)/60.0 AS MinutesRemaining
,CAST(SUBSTRING([TEXT], CHARINDEX(‘approximately’, [TEXT]) + 13,CHARINDEX(‘ seconds remain’, [TEXT]) – CHARINDEX(‘approximately’, [TEXT]) – 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
,[TEXT]
FROM @ErrorLog ORDER BY [LogDate] DESC
Kemudian klik tombol Execute, maka akan tampil progress waktu ‘In Recovery’ terhadap database yang terkait. Tunggu hingga proses tersebut selesai dan refresh database terkait. Biasanya setelah statusnya sudah 99%, database yang bermasalah tadi sudah bisa di akses kembali.
Semoga bermanfaat

Untuk troubleshooting & tutorial tentang SQL Server 2008 yang lain, agan2 bisa mampir di blog ane : http://infrasolutions.wordpress.com/. Cekidot

Diubah oleh f415al15 25-10-2013 17:10
0
3.2K
3


Komentar yang asik ya
Urutan
Terbaru
Terlama


Komentar yang asik ya
Komunitas Pilihan