it-swarm-eu.dev

Zjišťujete, jak došlo ke změně schématu?

Včera se stalo něco špatného.

Pohled, který byl vytvořen někdy dříve, byl upraven někým, kdo nakonec zprávy rozbil. Bohužel. někdo (vědomě nebo nevědomě) provedl tuto změnu v databázi PRODUKCE.

Moje otázka: Existuje způsob (skript/software/freeware atd.), Pomocí kterého můžeme zjistit, kdo (uživatelské jméno) provedl tuto změnu, abych mohl tomuto uživateli zrušit přístup k produkční databázi.

Pokud je moje otázka nejasná, prosím uveďte komentář.

21
xorpower

Tím se zaznamená do výchozího trasování, takže pokud je povoleno a mezitím se nepřevrátilo, mělo by se objevit v přehledu Historie změn schématu.

Chcete-li to získat v Management Studio, klepněte pravým tlačítkem myši na databázi a poté v místní nabídce vyberte Reports -> Standard Reports -> Schema Changes History

K získání stejných informací pomocí TSQL můžete použít

SELECT StartTime
       ,LoginName
       --,f.*
FROM   sys.traces t
       CROSS APPLY fn_trace_gettable(REVERSE(SUBSTRING(REVERSE(t.path),
                                                       CHARINDEX('\', REVERSE(t.path)), 
                                                       260)
                                             ) + N'log.trc', DEFAULT) f
WHERE  t.is_default = 1
       AND ObjectName = 'FOO'
       AND EventClass IN (46, /*Object:Created*/
                          47, /*Object:Dropped*/
                          164 /*Object:Altered*/ )
36
Martin Smith

Martin již ukázal na nejlepší cestu, stopu administrativního auditu, která je obvykle zapnutá (pokud to nebylo výslovně zakázáno). Pokud nemůžete najít informace ve stopě správce (bylo deaktivováno nebo bylo recyklováno) můžete načíst informace ze záloh protokolu. Vzhledem k tomu, že jde o produkční databázi, předpokládám, že máte pravidelný cyklus zálohování, s pravidelnými úplnými zálohami a zálohami protokolu. Budete muset obnovit, na samostatném serveru, databázi kolem času incidentu, aby DDL byl v aktuálně obnoveném protokolu. Pak je jednoduchá záležitost použití fn_dblog() a kontrola protokolu.

Jedním ze způsobů, jak začít s transakcemi zahajujícími transakce:

select [Begin Time], [Transaction Name], [Transaction SID], * 
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';

Pokud ALTER VIEW bylo vydáno v samostatné transakci (tj. není obklopeno BEGIN TRANSACTION/COMMIT) pak zahájí transakci s názvem CreatProc transaction. Hledejte to a [Transaction SID] je požadované přihlašovací SID.

Další možností je vyhledat transakci, která získala SCH_M v požadovaném zobrazení:

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

Všimněte si, že pokud byl pohled změněn DROP následovaným CREATE, bylo pravděpodobně změněno ID objektu, ale alespoň dostanete transakci, která naposledy provedla CREATE (aktuální ID objektu pohledu v obnovené db). S ID transakce se vrátíte zpět a načtete informace o zahájení transakce:

select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where [Transaction ID] = '...'
and Operation = 'LOP_BEGIN_XACT';

[Transakční identifikátor] je opět váš chlap. Použijte SUSER_SNAME pro načtení přihlašovacího jména z přihlašovacího SID. Pokud je SID 0x01, znamená to, že přihlašovací jméno bylo sa, což znamená, že to mohl udělat každý, kdo zná heslo sa.

19
Remus Rusanu

Ne, pokud jste se přihlásili pomocí spouštěče DDL nebo podobně

Chcete se podívat, kdo jako ALTER práva v této databázi, nebo členství role sysadmin/db_owner/ddl_admin. To by bylo lepší než obecná recenze než hon na čarodějnice. Pravděpodobně existují i ​​další lidé s právem provádět neschválené a neoprávněné změny

6
gbn

Pokud jste tak ještě neučinili, možná budete chtít vyzkoušet sestava Historie změn schémat k dispozici v SQL Server Management Studio. Vypadá to, že ve výchozím nastavení protokoly serveru SQL Server ( výchozí trasování ) a měli byste být schopni zobrazit tato data prostřednictvím této sestavy. Jediná nešťastná věc je, že tyto sledovací soubory jsou automaticky mazány/přetahovány v průběhu času, takže data již mohou být pryč. Hodně štěstí!

0
Mark Madej