Veritabanı Üzerinde Sildiğiniz Objeyi Kurtarma

Sql Server veritabanı sistemlerinde herhangi bir tarih aralığında sildiğiniz sql objesini nasıl kurtarırız. Burada en önemlisi Log File ‘ı okuma süreci . bu süreç bir kaç yöntem ile yapılmakta biz bu yöntemleri farklı bir makalede detaylı ele alacağız.

Log bilgilerini fn_dblog() sistem fonksiyonu kullanarak almaktayız.

 

-- Demo Database i oluşturma
CREATE DATABASE SQLTR 
GO
-- Demo Tablomuzu oluşturalım
USE SQLTR
GO 
CREATE TABLE SQLTR_Demo1 
(
Id INT IDENTITY (1,1) PRIMARY KEY CLUSTERED ,
Name NVARCHAR(100),
SurName NVARCHAR(100),
Email_Adress NVARCHAR(200)
)

-- Demo tablomuza data basalım..
INSERT INTO dbo.SQLTR_Demo1
        ( Name, SurName, Email_Adress )
VALUES  ( N'Yusuf', -- Name - nvarchar(100)
          N'Kahveci', -- SurName - nvarchar(100)
          N'[email protected]'  -- Email_Adress - nvarchar(200)
          )


INSERT INTO dbo.SQLTR_Demo1
        ( Name, SurName, Email_Adress )
VALUES  ( N'Yaşar', -- Name - nvarchar(100)
          N'Kahveci', -- SurName - nvarchar(100)
          N'[email protected]'  -- Email_Adress - nvarchar(200)
          )


--  Tablomuza kayıt ekleyecek Prosedürümüzü oluşturalım
CREATE PROC	SQLTR_sp_InPerson 
@Personel_Name NVARCHAR(100),
@Personel_SurName NVARCHAR(100),
@Personel_Email NVARCHAR (200)
AS
BEGIN
INSERT INTO dbo.SQLTR_Demo1
        ( Name, SurName, Email_Adress )
VALUES  ( @Personel_Name, -- Name - nvarchar(100)
          @Personel_SurName, -- SurName - nvarchar(100)
          @Personel_Email  -- Email_Adress - nvarchar(200)
          )	
		  END


-- Örnek kayıt ekleyelim
EXEC SQLTR_sp_InPerson  'Deneme','Deneme2','[email protected]'

-- Tablomuzda datamızı kontrol edelim
SELECT * FROM dbo.SQLTR_Demo1

-- Prosedürü silelim
DROP PROCEDURE SQLTR_sp_InPerson

Daha sonra sildiğimiz objeyi belirlediğimiz tarih aralığında log okuyarak bulmaya calısalım.

DECLARE @StartDate DATETIME= '2017-04-01' ,
    @EndDate DATETIME= '2017-04-20';

SELECT  CONVERT(VARCHAR(MAX), SUBSTRING([RowLog Contents 0], 33,
                                        LEN([RowLog Contents 0]))) AS [script]
FROM    fn_dblog(NULL, NULL)
WHERE   [Operation] = 'lop_delete_rows'
        AND [Context] = 'lcx_mark_as_ghost'
        AND [AllocUnitName] = 'sys.sysobjvalues.clst'
        AND [Transaction ID] IN (
        SELECT DISTINCT
                [Transaction ID]
        FROM    sys.fn_dblog(NULL, NULL)
        WHERE   Context = 'LCX_NULL'
                AND Operation = 'LOP_BEGIN_XACT'
                AND [Transaction Name] = 'DROPOBJ'
                AND CONVERT(NVARCHAR(11), [Begin Time]) BETWEEN @StartDate
                                                        AND   @EndDate )
        AND SUBSTRING([RowLog Contents 0], 33, LEN([RowLog Contents 0])) <> 0;

 

 

Kolay Gelsin…

3 Replies to “Veritabanı Üzerinde Sildiğiniz Objeyi Kurtarma”

  1. Hey there! I simply wish to give you a huge thumgs upp for your great information you’ve got right here on this post.
    I’ll be coming back to your blog for more soon.

  2. Everything is very open with a really clear explanation of the challenges.
    It was truly informative. Your site is extremely helpful.
    Thanks for sharing!

Leave a Reply

Your email address will not be published. Required fields are marked *