2010-11-25 3 views
1

Если кто-то удаляет любой объект из моей базы данных, такой как таблица, представление, sp и т. Д., Тогда как можно получить такие детали, как удалять и удалять из журнала транзакций. Является ли это возможным. пожалуйста, скажите мне простой способ прочитать журнал транзакций, в результате я смогу правильно получить эти детали.относительно журнала транзакций SQL Server

благодаря

ответ

2

Нет, журнал ransaction был создан для различных целей. Есть несколько продуктов разных поставщиков, которые пытаются получить информацию из журнала транзакций, но это неправильный путь.

, которые удалить и когда удаление

Если вам нужна эта информация, необходимая для создания триггеров в таблицу для удаления или обновления и собирать эту информацию.

Если вы используете MS SQL 2008, вы можете использовать функцию Change Data Capture.

+0

Я пишу в своем ответе об этом: «Есть некоторые продукты разных поставщиков, которые пытаются получить информацию из журнала транзакций, но это неправильно путь.". В моем случае Apex SQL Log помогает мне только один раз из пяти случаев. И это работает, только если у вас FULL модельный режим. – demas 2010-11-25 09:14:14

2

Очевидно, вы могли бы использовать продукт третьей части, такой как Apex SQL Log, хотя лично я его не использовал.

В зависимости от того, как недавно произошел инцидент, вы также сможете извлечь нужную информацию из встроенных отчетов в SQL Server 2005, таких как отчет истории изменений схемы. Эта информация доступна вам с помощью функции Trace Default. См. using the Default Trace.

Что вам действительно нужно, чтобы убрать из вашего инцидента, является использование урока для разработки стратегии аудита схемы для вашей среды. В Интернете много статей, в которых подробно описывается, как это можно достичь с помощью триггеров. Например, см. Using DDL Triggers in SQL Server 2005 to Capture Schema Changes

1

Вы можете восстановить базу данных (без ее перезаписи) из полной резервной копии резервной копии и журнала транзакций, а затем скопировать удаленные объекты оттуда. Хорошей практикой является сохранение исходного кода для ваших хранимых процедур, представлений и таблиц вне базы данных, как правило, в системе управления версиями, поэтому вам не нужно восстанавливать резервную копию базы данных для их получения.

1

Вы можете использовать либо DDL триггеров или Функция аудита SQL Server

DDL триггеров пожара на CREATE, ALTER, DROP, и операции, связанные с настройками безопасности объектов базы данных (например, GRANT, DENY ...)

В в следующем примере триггер DDL отслеживает операции CREATE, ALTER и DROP, выполняемые в таблицах базы данных, хранимых процедурах, функциях и представлениях. Пример запуска использует ранее созданный репозиторий таблицы (DDL_Events_by_DDL_TRIGGER) с соответствующими строками

CREATE TRIGGER DDL_TRIGGER ON DATABASE 
FOR CREATE_TABLE , 
    ALTER_TABLE , 
    DROP_TABLE , 
    CREATE_PROCEDURE , 
    ALTER_PROCEDURE , 
    DROP_PROCEDURE , 
    CREATE_FUNCTION , 
    ALTER_FUNCTION , 
    DROP_FUNCTION , 
    CREATE_VIEW , 
    ALTER_VIEW , 
    DROP_VIEW 
AS 
DECLARE 
    @event xml; 
SET 
@event = EVENTDATA(); 
INSERT INTO DDL_Events_by_DDL_TRIGGER 
VALUES 
(
REPLACE(CONVERT(varchar(58), 
@event.query('data(/EVENT_INSTANCE/PostTime)')), 'T', ' ') 
, 
CONVERT(varchar(185), 
@event.query('data(/EVENT_INSTANCE/LoginName)')) 
, 
CONVERT(varchar(185), 
@event.query('data(/EVENT_INSTANCE/DatabaseName)')) 
, 
CONVERT(varchar(185), 
@event.query('data(/EVENT_INSTANCE/SchemaName)')) 
, 
CONVERT(varchar(185), 
@event.query('data(/EVENT_INSTANCE/ObjectName)')) 
, 
CONVERT(varchar(185), 
@event.query('data(/EVENT_INSTANCE/ObjectType)')) 
, 
CONVERT(varchar(max), 
@event.query('data(/EVENT_INSTANCE/TSQLCommand/CommandText)')) 
); 

В таблице хранилище будет содержать (как указано в триггере) операций DDL на схеме базы данных, вместе с информацией о том, кто, когда и что было изменено

Другой собственный метод, который может быть использован для определения того, была ли изменена база данных SQL Server, - SQL Server Audit feature. Эта функция была внедрена в SQL Server 2008 и собирает действия сервера и уровня базы данных, связанные с функцией расширенных событий SQL Server.Тем не менее, группы действий уровня базы данных доступны только в выпусках SQL Server Enterprise и Developer

Смежные вопросы