Martin, zaten açık olan (açıkça devre dışı bırakılmadığı sürece), idari denetim izinin en iyi caddeye işaret etti. Eğer Yönetici izlemesinde bilgi bulamıyorum sen (devre dışı olduğunu veya geri dönüşümlü olan) olabilir günlük yedeklerden bilgi almak. Üretim DB'si olduğundan, periyodik tam yedekleme ve günlük yedekleriyle düzenli bir yedekleme döngüsünüz olduğunu varsayarım. Ayrı bir sunucuda veri tabanını olayın yakınına kadar geri yüklemeniz gerekecek, böylece DDL mevcut geri yüklenen kayıt defterinde olacak. O zaman fn_dblog()
kütüğü kullanmak ve incelemek basit bir meseledir .
Bunun bir yolu, işlem başlama işlemlerine geçmektir:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';
Eğer ALTER VIEW
bağımsız bir işlemle (yani BEGIN TRANSACTION
/ ile çevrelenmemiş COMMIT
) yayınlandıysa, o zaman adı verilen bir işleme başlayacaktır CreatProc transaction
. Bunun için arayın ve [Transaction SID]
istediğiniz kullanıcı adı SID'dir.
Başka bir olasılık da, istediğiniz görünümde bir SCH_M edinen işlemi aramaktır:
select [Lock Information], *
from fn_dblog(null, null)
where [Lock Information] like '%' + cast(object_id('...') as varchar(10))+'%'
and [Lock Information] like '%LOCK_SCH_M%'
go
Görünümü DROP ve ardından CREATE ile değiştirdiyseniz, nesne kimliğinin büyük olasılıkla değiştirildiğini, ancak en azından CREATE (en son geri yüklenen db'deki görünümün geçerli nesne kimliği) olan CREATE işlemini gerçekleştireceğinizi unutmayın. İşlem kimliği ile geri dönün ve işlem başlangıç bilgisini alın:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where [Transaction ID] = '...'
and Operation = 'LOP_BEGIN_XACT';
[İşlem SID] yine adamınız. SUSER_SNAME
Oturum açma adını giriş SID'sinden almak için kullanın . SID 0x01 ise, giriş yapıldığı anlamına gelir; sa
bu, sa
şifreyi yapabileceğini bilen herhangi bir kişi anlamına gelir .