İPUCU

Donanım Bilgisayar Donanımı İle İlgili Yardımlaşma Bölümümüz ...

Seçenekler

Bilgisayarda Silinen Verileri Geri Getirme#DaRKHeaLLeR##

DarkHealler - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2015
Nereden:
izmir:)
Yaş:
27
Mesajlar:
8.073
Konular:
1071
Teşekkür (Etti):
1893
Teşekkür (Aldı):
2207
Ticaret:
(0) %
29-04-2017 14:39
#1
Bilgisayarda Silinen Verileri Geri Getirme#DaRKHeaLLeR##
Öncelikle Merhaba Arkadaşlar Ufak bir bilgim vardı aslında bu konuda ama birazdaha detaylı araştırma sonucu birazdaha bilgime bilgi kattım sizlere bu bilgiyi paylaşırken bazı bölümleri daha farklı yerlerden aldığım bilgiler ile sizlere elimden geldiği kadarı ile aktarmaya çalışacağım ...



veritabanından hata sonucu silinen verilerin size nasıl yapılacağı hakkında bilgi aktaracağım. Bu işlemi yapabilmek için veritabanında recovery model bilgisi FULL yada Bulk-Logged olmalıdır.. Simple modda olan bir veritabanı transaction logs backup’I desteklemediği için bu işlemi yapamazssınız.


Öncelikle demomuzu hazırlamak için bir veritabanı ve varsayılan değerler barındıran tablo oluşturalım. ( Demo ortamımız Windows Server 2012 R2 üzerinde SQL Server 2016 Developer Edition’dır. )


-- E:\\RecoverDeletedData dosya yolunda RecoverDeletedData isiminde veritabanı oluşturuyoruz. Recovery Mode bilgisi FULL


Kod:
CREATE DATABASE [RecoverDeletedData]
ON PRIMARY
( NAME = N’RecoverDeletedData’, FILENAME = N’E:\\RecoverDeletedData\\RecoverDeletedData.mdf’ , SIZE = 8192KB , FILEGROWTH = 524288KB )
LOG ON
( NAME = N’RecoverDeletedData_log’, FILENAME = N’E:\\RecoverDeletedData\\RecoverDeletedData_log.ldf’ , SIZE = 8192KB , FILEGROWTH = 1048576KB )
GO
ALTER DATABASE [RecoverDeletedData] SET RECOVERY FULL

-- Oluşturduğumuz Veritabanı üzerinde Orders isimli bir tablo oluşturuyoruz.


Kod:
use RecoverDeletedData
go
create table Orders
(
OrderId int not null primary key identity(1,1),
OrderDate   DATETIME   DEFAULT   GETDATE ( ) ,
OrderItem   VARCHAR ( 25 )   DEFAULT   ’MyItem’ ,
LineItem    VARCHAR ( 25 )   DEFAULT   ’MyLineItem’
)
Demo için kullanacağınız veritabanını oluşturdunuz . İçinde Orders adubda tablonuz da var. Şimdi bunların aşağıdaki kod ile Full Backup ve Transaction Log Backup alın


-- E:\\RecoverDeletedData diskine RecoverDeletedData_FULL.bak isiminde Full Backup Alıyoruz.


Kod:
BACKUP   DATABASE   [RecoverDeletedData] 
TO   DISK   =   N’E:\\RecoverDeletedData\\RecoverDeletedData_FULL.bak’   WITH   INIT
--E:\\RecoverDeletedData diskine RecoverDeletedData_FULL.bak isiminde Transaction Log Backup Alıyoruz.


Kod:
BACKUP   LOG   [RecoverDeletedData] 
TO   DISK   =   N’E:\\RecoverDeletedData\\RecoverDeletedData_LOG_1.trn’   WITH   INIT
GO
RecoverDeletedData isimli veritabanında bazı insert işlemler gerçekleştirmeyi deneyelim . Aşağıdaki gibi benzer sorgular ile belirli zaman aralıklar sorgu çalıştırıp data oluşturdum.


Kod:
INSERT   INTO   Orders   DEFAULT   VALUES ;
GO   100
waitfor delay ’00:00:10′
GO


Oluşan demo datası üzerinde Delete işlemi gerçekleştiriyorum.
delete from Orders where OrderId in ( 2,10,11,5,7,30)

Şimdi Aşağıdaki fn_dblog sorgusu ile delete işlemin LSN bilgisini ve işlem zamanı bilgisini öğrenelim.




Yukarıdaki TransactionID bilgisini yedekleyelim, aşağıdaki sorguda kullanıp hangi kayıtların silindiği bilgisine ulaşacağız. Yukarıda kullandığım Delete sorgusu sonucunda 6 kayıt silinmişti, aşağıdaki sorgunun sonucuda 6 kayıt dönüyor.


Kod:
SELECT [Current LSN], [Transaction ID], [Operation], [AllocUnitName]
FROM fn_dblog(NULL, NULL)
WHERE 1=1
and [Transaction ID] = ‘0000:00000398’
and [Operation] = ‘LOP_BEGIN_XACT’


Yukarıdaki gördğümüz Current LSN numarasını bir yere not almamızda fayda var, ihtiyacımız olacaktır. Aşağıdaki sorgu ile mevcut veritabanı farklı isim ile aldığımız full backup’dan restore ediyoruz.


Kod:
USE RecoverDeletedData 
GO 
RESTORE DATABASE RecoverDeletedData_COPY FROM 
DISK = ‘E:\\RecoverDeletedData\\RecoverDeletedData_FULL.bak’ 
WITH 
MOVE ‘RecoverDeletedData’ TO ‘E:\\RecoverDeletedData\\COPY\\RecoverDeletedData.mdf’, 
MOVE ‘RecoverDeletedData_log’ TO ‘E:\\RecoverDeletedData\\COPY\\RecoverDeletedData_log.ldf’, 
REPLACE, NORECOVERY; 
GO



Transaction Log Backup restore ederken STOPBEFOREMARK işlemini kullanacağız. STOPBEFOREMARK kullanbilmek için daha önce aldığımız Current LSN numarasının onluk sayı sistemine çevirmemiz gerekiyor. Örneğimizdeki Current LSN numarası ( 00000022:00000193:0001 ) 3 parça olarak alıglıyoruz. Birinci Kısım ( 00000022 ), İkinci Kısım ( 00000193 ) ve üçüncü kısım ( 0001 ) dır. Bu değerleri şimdi bu web sitesi aracılığı ile 10’luk sayı sistemine çeviriyoruz.


Kod:
00000022 -> 34
00000193 -> 403
0001 -> 1
Yukarıdaki değerleri birleştirip kendimize STOPBEFOREMARK’ın Kabul edeceği decimal bir değer elde ediyoruz. ( 3400000004030000000001 )

STOPBEFOREMARK özelliği için decimal değeri oluşturmak için web sitesini kullanmadan da aşağıdaki sorguyu kullanıp STOPBEFOREMARK’ın decimal değerini elde edebiliriz.


Kod:
SELECT CAST(CAST(CONVERT(VARBINARY, LEFT([Current LSN], 8), 2 ) AS INT) AS VARCHAR) + RIGHT(‘0000000000’ + CAST(CAST(CONVERT(VARBINARY, SUBSTRING([Current LSN], 10, 8), 2) AS INT) AS VARCHAR), 10 ) + RIGHT(‘00000′ + CAST(CAST(CONVERT(VARBINARY, RIGHT([Current LSN], 4), 2 ) AS INT) AS VARCHAR), 5) AS [Decimal LSN] , [Transaction Name], [Begin Time] FROM fn_dump_dblog (NULL, NULL, N’DISK’, 1, N’E:\\RecoverDeletedData\\RecoverDeletedData_LOG_2.trn’,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
WHERE [Transaction Name] IN (‘DELETE’)


Öncelikli olarak ilk aldığımız Transaction Log’u restore edelim.


Kod:
RESTORE LOG [RecoverDeletedData_COPY] FROM DISK = N’E:\\RecoverDeletedData\\RecoverDeletedData_LOG_1.trn’ WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
GO
Şimdi ise e lde ettiğimiz Decimal LSN numarasını nihayet STOPBEFOREMARK ile kullanabilir durumdayız.


Kod:
USE RecoverDeletedData 
GO 
RESTORE LOG RecoverDeletedData_COPY FROM DISK = N’E:\\RecoverDeletedData\\RecoverDeletedData_LOG_2.trn’ WITH STOPBEFOREMARK = ‘lsn:34000000040300001‘


Bir yazımızın daha sonuna geldik başta belirttiğim gibi farklı 2-3 forumdan da konuyu hazırlarken destek aldım . umarım işinize yarar..
Tekrar görüşmek Dileğiyle.iYi Forumlar Dilerim...
---------------------


Birgun tekrar donecegim
RAUN, BlackShad0w, Desmondv1, Akadir51, byZehirX Teşekkür etti.
dogvilla - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
03/2017
Nereden:
geldim ben
Yaş:
21
Mesajlar:
491
Konular:
78
Teşekkür (Etti):
31
Teşekkür (Aldı):
68
Ticaret:
(0) %
29-04-2017 14:39
#2
eline sağlık.
KoyuAdam - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2012
Yaş:
23
Mesajlar:
5.913
Konular:
944
Teşekkür (Etti):
1920
Teşekkür (Aldı):
2325
Ticaret:
(0) %
29-04-2017 14:41
#3
emeğine sağlık işim düşerse incelerim. güzel konu
--------------------- G101010101010
A010101010101
U101010101010
S010101010101
S101010101010
DarkHealler Teşekkür etti.
kenzai - ait Kullanıcı Resmi (Avatar)
V.I.P Üyelik Sorumlusu
Üyelik tarihi:
12/2013
Mesajlar:
8.469
Konular:
1441
Teşekkür (Etti):
3797
Teşekkür (Aldı):
2487
Ticaret:
(0) %
29-04-2017 14:46
#4
eline sağlık
DarkHealler - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2015
Nereden:
izmir:)
Yaş:
27
Mesajlar:
8.073
Konular:
1071
Teşekkür (Etti):
1893
Teşekkür (Aldı):
2207
Ticaret:
(0) %
29-04-2017 14:47
#5
Alıntı:
dogvilla´isimli üyeden Alıntı Mesajı göster
eline sağlık.
Teşekkür ederim.
Alıntı:
KoyuAdam´isimli üyeden Alıntı Mesajı göster
emeğine sağlık işim düşerse incelerim. güzel konu
Teşekkür ederim inşallah işine yarar..
Alıntı:
kenzaii´isimli üyeden Alıntı Mesajı göster
eline sağlık
Teşekkür ederim
---------------------


Birgun tekrar donecegim
TürK.KuRdU - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2016
Nereden:
-
Yaş:
17
Mesajlar:
3.392
Konular:
311
Teşekkür (Etti):
955
Teşekkür (Aldı):
624
Ticaret:
(0) %
29-04-2017 14:48
#6
Emegine saglik
---------------------
RAUN - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
06/2011
Nereden:
Reykjavik
Mesajlar:
6.676
Konular:
1174
Teşekkür (Etti):
1625
Teşekkür (Aldı):
7036
Ticaret:
(0) %
29-04-2017 14:53
#7
Dark Eline emeğine sağlık dostum.
DarkHealler Teşekkür etti.
SessizKalpler - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2016
Nereden:
...
Mesajlar:
4.873
Konular:
681
Teşekkür (Etti):
122
Teşekkür (Aldı):
949
Ticaret:
(0) %
29-04-2017 14:59
#8
Ellerinize sağlık hocam.
--------------------- .
Desmondv1 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2016
Mesajlar:
23
Konular:
1
Teşekkür (Etti):
5
Teşekkür (Aldı):
3
Ticaret:
(0) %
29-04-2017 15:04
#9
Eline sağlık yararlanıcağım
ViceXx - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2017
Nereden:
Gitti O
Yaş:
19
Mesajlar:
632
Konular:
54
Teşekkür (Etti):
126
Teşekkür (Aldı):
320
Ticaret:
(0) %
29-04-2017 16:11
#10
Elinize sağlık hocam
--------------------- Zayıfa acımak doğaya ihanettir ve hayat güçsüzlüğü affetmez ...

Adolf Hitler.....


Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı