Che tipo di informazioni di controllo sono memorizzate dal server di SQL quando viene eseguita un'operazione CREATE TABLE o ALTER TABLE?
-
13-09-2019 - |
Domanda
L'ispirazione per questa domanda è un proc memorizzato ha rotto su di me perché si chiama un altro stored procedure che inserisce i dati in una tabella il cui schema era completamente alterata.
La domanda è: si dispone di una tabella di un database SQL Server, e non si sa come sia arrivato lì. Non è necessario alcun trigger DDL sul posto per le informazioni di controllo personalizzato, e non v'è alcuna traccia nel repository controllo del codice sorgente del DDL tabelle. Utilizzando solo SQL Server, quali dati forense si può ottenere sulla tabella.
Io, e chi si imbatte in questa domanda in una situazione simile, non sta per essere aiutato da suggerimenti per quanto riguarda il controllo delle versioni e trigger DDL. Queste sono soluzioni a termine grandi go, e c'è un sacco di informazioni su questo blog su questi argomenti, se la politica aziendale ci permette di implementare tali soluzioni. Quello che ho, e la gente nella mia situazione davvero bisogno è di essere in grado di raccogliere il maggior numero di frammenti di dati possibili dal server SQL, da combinare con qualsiasi altro dei dati che possiamo trovare.
Soluzione
Purtroppo, non c'è modo di ricostruire ciò che è accaduto, ad eccezione di:
-
se gli amministratori di database hanno tracce in esecuzione e la storia. SQL Server 2005 ha una traccia di default e non v'è la traccia "Blackbox", ma questi sono utilizzati per scoprire cosa è successo a destra prima di un crash
-
se avete modello di recupero completo, allora si può provare uno strumento visualizzatore di log ( libero Red gate uno )
-
secondo l'attività e il vostro modello di sicurezza, si potrebbe anche verificare il registro di sicurezza di Windows per vedere chi connesso con privilegi DDL
-
i log degli eventi di SQL possono anche avere informazioni. Ad esempio, se è stato attivato il flag di traccia che registra gli errori "permesso", allora si può vedere quando ha cominciato. O la persona che ha effettuato la modifica può aver generato altre eccezioni che vengono registrati
-
si potrebbe chiedere aventi diritto. Potrebbe essere un vero e proprio errore (ad esempio, dicono che sono in dev)
Altri suggerimenti
La query seguente mi ha fatto il tempo di creare e modificare durare.
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')
Si dovrebbe essere in grado di trovare la creazione della tabella nel . log delle transazioni non ho mai usato uno qualsiasi degli strumenti visualizzatore qui, e io non riuscivo a capire come la ricerca indietro nel tempo per questo, ma tutto avviene in una transazione, quindi è devi essere registrato - anche il le tabelle di sistema ...