Определить, какой пользователь удалил базу данных SQL Server? - PullRequest
5 голосов
/ 25 июня 2009

У меня есть база данных SQL Server 2005, которая была удалена, и мне нужно выяснить, кто ее удалил. Есть ли способ получить это имя пользователя?

Спасибо, MagicAndi.

Ответы [ 4 ]

10 голосов
/ 25 июня 2009

Если с момента удаления было мало или вообще не было никаких действий, то полезная трассировка может оказаться полезной. Попробуйте запустить:

DECLARE @path varchar(256)

SELECT @path = path
FROM sys.traces
where id = 1

SELECT *
FROM fn_trace_gettable(@path, 1)

[В дополнение к стандартной трассировке существует также менее известная трассировка «черного ящика», которая полезна для диагностики периодических сбоев сервера. В этом посте, Встроенные трассировки SQL Server , показано, как его настроить.]

4 голосов
/ 25 июня 2009

Сначала я бы спросил всех, кто имеет административный доступ к Sql-серверу, если они удалили его.

3 голосов
/ 05 июня 2014

Вот немного точнее TSQL

SELECT DatabaseID,NTUserName,HostName,LoginName,StartTime
FROM 
sys.fn_trace_gettable(CONVERT(VARCHAR(150), 
        ( SELECT TOP 1
                    f.[value]
            FROM    sys.fn_trace_getinfo(NULL) f
            WHERE   f.property = 2
        )), DEFAULT) T
JOIN sys.trace_events TE ON T.EventClass = TE.trace_event_id
WHERE TE.trace_event_id =47 AND T.DatabaseName = 'delete'
-- 47 Represents event for deleting objects. 

Это можно использовать в обоих случаях, когда вы знаете или не знаете имя базы данных / объекта. Результаты выглядят так:

enter image description here

3 голосов
/ 25 июня 2009

Лучший способ получить информацию - восстановить последнюю резервную копию.

Теперь обсудим, как избежать подобных проблем в будущем.

Сначала убедитесь, что процесс резервного копирования выполняется правильно и часто. Сделайте журнал транзакций суммированным каждые 15 минут или полчаса, если это высокопроизводительная транзакционная база данных. Тогда самое большое, что вы теряете, - это полчаса работы. Практикуйте восстановление базы данных, пока вы не сможете легко сделать это в стрессовом состоянии.

В SQL Server 2008 вы можете добавить триггеры DDL (не уверены, сможете ли вы сделать это в 2005 году), что позволит вам регистрировать, кто внес изменения в структуру. Это может стоить вашего времени, чтобы разобраться в этом.

ЗАПРЕЩАЕТСЯ доступ к вашей производственной базе данных администраторам более двух человек - dba и резервный сотрудник, когда dba отсутствует. Эти люди должны загрузить все изменения в структуру базы данных и код, и все изменения должны быть записаны в сценарии, проверены и проверены в первую очередь на QA. Никакой незашифрованный код «беги по месту твоих брюк» никогда не должен запускаться на prod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...