Martin já apontou para a melhor avenida, o rastreamento de auditoria administrativa que geralmente está ativado (a menos que tenha sido explicitamente desativado). Se você não conseguir encontrar as informações no rastreamento do administrador (foi desativado ou foi reciclado), é possível recuperar as informações dos backups de log. Como é um banco de dados de produção, presumo que você tenha um ciclo de backup regular, com backups periódicos completos de backup e log. Você precisará restaurar, em um servidor separado, o banco de dados por volta da hora do incidente, para que o DDL esteja no log restaurado atual. Então é uma simples questão de usar fn_dblog()
e inspecionar o log.
Uma maneira é seguir as operações de início da transação:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';
Se o ALTER VIEW
foi emitido em uma transação independente (ou seja, não é cercado por BEGIN TRANSACTION
/ COMMIT
), ele iniciará uma transação denominada CreatProc transaction
. Procure e [Transaction SID]
é o SID de login que você deseja.
Outra possibilidade é procurar a transação que adquiriu um SCH_M na visualização desejada:
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
Observe que se a exibição foi alterada por DROP seguida por CREATE, o ID do objeto provavelmente foi alterado, mas pelo menos você obterá a transação que fez o último CREATE (o ID do objeto atual da exibição no banco de dados restaurado). Com o ID da transação, você volta e recupera as informações de início da transação:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where [Transaction ID] = '...'
and Operation = 'LOP_BEGIN_XACT';
O [Transaction SID] é, novamente, o seu cara. Use SUSER_SNAME
para recuperar o nome de login do SID de login. Se o SID for 0x01, significa que o login foi sa
, o que significa que qualquer pessoa que saiba que a sa
senha poderia ter feito isso.