Yanlışlıkla uzak bir SQL Server 2008 tablosundan 2.000.000 kayıt sildim. Sunucu bana sunucu tarafındaki yedekleme dosyalarına erişim izni vermiyor.
Bu kayıtları geri almanın bir yolu var mı?
Yanlışlıkla uzak bir SQL Server 2008 tablosundan 2.000.000 kayıt sildim. Sunucu bana sunucu tarafındaki yedekleme dosyalarına erişim izni vermiyor.
Bu kayıtları geri almanın bir yolu var mı?
Yanıtlar:
Veritabanınız tam kurtarma modunda mı?
Evet ise, işlem günlüğü yedeklemesi mi yapıyorsunuz?
Hayır ise (tam kurtarma modunda değilse), son tam yedeklemeyi farklı bir isimle veritabanı olarak geri yükleyin. (Zaten sahip olduğunuz veritabanının üzerine yazmayın.) Oradan, yedekleme sırasında çevrimiçi olan kayıtları geri yükleyebileceksiniz, ancak o zamandan bu yana yapılan tüm değişiklikleri kaybedeceksiniz.
SQL Server, silinen her kayıt için günlükleri tutar. Bu günlükleri fn_dblog
SQL Server işlevi aracılığıyla sorgulayabilirsiniz .
SELECT [RowLog Contents 0]
FROM sys.fn_dblog(NULL, NULL)
WHERE
AllocUnitName = 'dbo.TableName'
AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )
AND Operation in ( 'LOP_DELETE_ROWS' )
;
Ancak bu günlük Hex formatındadır ve bu Hex formatını gerçek verilerinize dönüştürmeniz gerekir.
Aşağıdaki makale, silinen kayıtları yukarıda tanımlandığı şekilde kurtarmanıza yardımcı olacaktır:
http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/
@user1059637
- Kodunuza işlevsellik ekleyenlere karşı tavrınız nedir?
Maalesef, daha fazla bilgi olmadan size yardımcı olamayacağız. Ancak sorunuzdan, veritabanınızdan 2 milyon kayıt gibi görünen şeyleri silmiş olduğunuzu görüyorum. Veritabanınıza tam giriş yapmadığınız ve çok özel araçlar satın almadığınız sürece, büyük olasılıkla bu bilgileri kurtaramazsınız.
Sadece ne yaptığını düşündüğünüzü ve neden kayıtları geri alamayacağınızı düşündüğünüzü ve veritabanınızın düzenini tanımlayabildiğinizi daha ayrıntılı olarak açıklayabilirseniz, size biraz daha yardımcı olabiliriz.
Bazı genel tavsiyeler: 2 milyon kaydı sildiğinizi düşünüyorsanız, şu anda muhtemelen biraz çıldırmışsınızdır. Bu yüzden beş dakikalık bir mola vermeli, sakinleşmeli ve problemi tekrar görmelisiniz. Ayrıca, patronunuza makul olup olmadığını derhal söylemelisiniz (saat 2: 00'de birine söylemeyin) ve bir çözüm üzerinde çalışıyorsunuz. Neler olduğunu kabul etmek, çılgınca toparlanmaya çalışmak ve potansiyel olarak sorunları daha da kötüleştirip ayrıntıları gizlemeye çalışmaktan daha iyidir. Patronunuzun bir şekilde yardımcı olabileceğini bilmek, sorunu çözmenize yardımcı olur. Dediğim gibi, sadece bazı genel tavsiyeler.