MS SQL Аудит - PullRequest
       40

MS SQL Аудит

0 голосов
/ 08 января 2009

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

Я хочу сделать это как можно более обобщенным образом, разработав таблицы, и как все будет связываться и обновляться.

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

Есть ли в Хранимой Процедуре все итерации по всем столбцам таблицы? И я хотел бы написать это таким образом, чтобы он работал с несколькими таблицами, автоматически подбирал и проверял добавленные столбцы и тому подобное.

Есть идеи?

РЕДАКТИРОВАТЬ: думаю, я должен уточнить. Я буду проверять данные, которые есть в таблицах. Но я буду использовать одни и те же таблицы для хранения проверенных данных для каждой таблицы в базе данных.

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

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

И я хотел бы сделать это без длинного списка операторов if и операторов вставки для каждого столбца. (Делая это в общем цикле, он будет обрабатывать добавленные столбцы автоматически и не будет беспокоиться об удаленных столбцах)

Ответы [ 5 ]

1 голос
/ 08 января 2009

По "добавленным столбцам", я думаю, вы хотите провести аудит DDL. Если вы используете SQL 2005, то вам нужна эта ссылка .

Если не использовать SQL 2005, то вы, вероятно, захотите использовать один из многих инструментов сравнения схем SQL, например, набор инструментов SQL Red Gates, вероятно, содержит что-то там.

Если у вас нет $ для инструментов, то вы можете просто запускать периодические запросы к файлам information_schema.tables и information_schema.columns. Периодически собирая их в постоянных таблицах, вы можете определить, когда они получили или потеряли строки (и, следовательно, произошла измененная схема)

Если вы вместо этого проводите аудит данных , вам нужно будет сгенерировать несколько триггеров кода, снова используя information_schema.tables и information_schema.column.

0 голосов
/ 08 января 2009

Если это вариант для вас, просто обновитесь до SQL Server 2008 и включите Change Data Capture.

0 голосов
/ 08 января 2009

Это можно сделать, если вы используете слой доступа к данным, который может перехватывать обновляемые таблицы и столбцы и генерировать операторы вставки для таблицы аудита. В хранимой процедуре? Какая хранимая процедура? У вас есть один, который делает обновления? Или вы создаете по одному на таблицу?

0 голосов
/ 08 января 2009

Использовать триггеры DDL (при условии, что у вас SQL Server 2005 +)!

http://www.sqlteam.com/article/using-ddl-triggers-in-sql-server-2005-to-capture-schema-changes

http://technet.microsoft.com/en-us/library/ms189871.aspx

0 голосов
/ 08 января 2009

Были бы соображения производительности, но вы могли бы добавить триггеры вставки и обновления во все ваши таблицы и добавить триггеры в свои таблицы аудита.

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