Какого рода данные аудита хранятся на сервере sql при выполнении операции CREATE TABLE или ALTER TABLE? - PullRequest
2 голосов
/ 12 июня 2009

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

Вопрос в том, что у вас есть таблица в базе данных SQL Server, и вы не знаете, как она туда попала. У вас нет никаких триггеров DDL для настраиваемой информации аудита, и в вашем хранилище контроля версий таблиц DDL нет записи. Используя только SQL Server, какие криминалистические данные вы можете получить о таблице.

Я и тот, кто сталкивается с подобным вопросом в подобной ситуации, не будут помогать предложениями относительно контроля версий и триггеров DDL. Это отличные решения для продвижения вперед, и в этом блоге есть много информации на эти темы, если корпоративная политика позволяет нам внедрять эти решения. Что мне и людям в моей ситуации действительно нужно, так это иметь возможность собрать как можно больше фрагментов данных с сервера SQL, чтобы объединить их с любыми другими данными, которые мы можем придумать.

Ответы [ 3 ]

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

К сожалению, у вас нет возможности восстановить то, что произошло, кроме:

  • если администраторы баз данных имеют запущенные трассировки и историю. SQL Server 2005 имеет трассировку по умолчанию и трассировку «черного ящика», но они используются для выяснения того, что произошло прямо перед сбоем

  • если у вас есть модель восстановления FULL, вы можете попробовать инструмент просмотра журнала ( бесплатный Red Gate one )

  • в зависимости от активности и модели безопасности, вы также можете проверить журнал безопасности Windows, чтобы увидеть, кто вошел в систему с привилегиями DDL

  • Журналы событий SQL также могут содержать информацию. Например, если вы включили флаг трассировки, который регистрирует ошибки «разрешения», вы можете увидеть, когда он начался. Или лицо, внесшее изменение, возможно, сгенерировало другие регистрируемые исключения

  • вы могли бы спросить тех, у кого есть права. Это может быть подлинной ошибкой (например, мысль, что они были в dev)

1 голос
/ 12 июня 2009

Следующий запрос дал мне время создания и последнего изменения.

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbTableInQuestion]') AND type in (N'U')
0 голосов
/ 12 июня 2009

Вы должны быть в состоянии найти создание таблицы в журнале транзакций . Я никогда не использовал здесь никаких инструментов для просмотра, и я не мог сказать вам, как выполнить поиск во времени для это, но все происходит в транзакции, поэтому она должна быть зарегистрирована - даже системные таблицы ...

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