Martin ya señaló hacia la mejor vía, la traza de auditoría administrativa que generalmente está activada (a menos que se haya desactivado explícitamente). Si no puede encontrar la información en el seguimiento del administrador (se deshabilitó o se recicló), puede recuperar la información de las copias de seguridad del registro. Como es una base de datos de producción, supongo que tiene un ciclo de copia de seguridad regular, con copias de seguridad completas periódicas y copias de seguridad de registro. Deberá restaurar, en un servidor separado, la base de datos a la hora del incidente para que el DDL esté en el registro restaurado actual. Entonces es una simple cuestión de usar fn_dblog()
e inspeccionar el registro.
Una forma es ir por operaciones de inicio de transacción:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';
Si ALTER VIEW
se emitió en una transacción independiente (es decir, no está rodeada por BEGIN TRANSACTION
/ COMMIT
), se iniciará una transacción denominada CreatProc transaction
. Búscalo y [Transaction SID]
es el SID de inicio de sesión que deseas.
Otra posibilidad es buscar la transacción que adquirió un SCH_M en la vista que desea:
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
Tenga en cuenta que si DROP cambió la vista seguida de CREATE, es probable que la identificación del objeto haya cambiado, pero al menos obtendrá la transacción que realizó CREATE por última vez (la identificación del objeto actual de la vista en la base de datos restaurada). Con la identificación de la transacción, regresa y recupera la información de inicio de la transacción:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where [Transaction ID] = '...'
and Operation = 'LOP_BEGIN_XACT';
El [SID de la transacción] es, de nuevo, tu chico. Use SUSER_SNAME
para recuperar el nombre de inicio de sesión del SID de inicio de sesión. Si el SID es 0x01 significa que el inicio de sesión fue sa
, lo que significa que cualquier persona que conozca la sa
contraseña podría haberlo hecho.