2015-04-27 4 views
0

Я хочу реализовать аудит в своем приложении. Я не хочу добавлять шаблонный код во всех приложениях, а также использовать триггер будет влиять на производительность, которая не может быть выполнена, так как большая часть обрабатываемых данных должна отображаться в реальном времени.Аудит в SQL Server 2005 без триггеров

Есть ли другой способ сделать это. В настоящее время я использую SQL-сервер 2005.

+3

«Использование триггера повлияет на производительность» - практически любое решение, о котором я могу думать, будет иметь * некоторое влияние на производительность - вы перемещаете больше данных и данные должны храниться. Вы реализовали * триггеры и измерили * неприемлемое влияние на производительность? Если да, то какие объемы данных вы имеете в виду и что было бы приемлемо? –

+0

Да, это сильно повлияло на производительность, так как данные очень велики, может идти до 100000 ~ за один вызов или больше – XYZ

+0

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

ответ

0

Если вы используете NHibernate, вы можете использовать прослушиватели событий NHibernate. Если вы используете EntityLite, вы можете переопределить методы вставки, обновления и удаления DataService. Если вы используете Entity Framework, вы можете использовать профилирующие методы, как описано here Если вы используете raw ADO.NET, то это было бы более сложно, возможно, вы могли бы написать обертку поставщика ADO.NET, но это слишком много.

+0

Тем не менее, это не поможет мне зарегистрировать процесс, связанный с изменением, которое произошло в любом значении. Есть ли способ, с помощью которого я могу зарегистрировать вовлеченный процесс и внесенные в него изменения. – XYZ

+0

Какие технологии доступа к данным вы используете? –

+0

Хранимые процедуры и NHibernate – XYZ

0

Я нашел следующую статью на тему:

http://solutioncenter.apexsql.com/sql-server-database-auditing-techniques/

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

+0

В статье, в которой используется ссылка, используется более новая версия визуальной студии. Я хочу провести аудит в SQL SERVER 2005. – XYZ

0

Может ли SQL Change Data Capture (CDC) работать на вас? Он должен быть включен в базе данных и каждой таблице, которая должна отслеживаться, но автоматически отслеживает все изменения в отдельной таблице.

+0

Это появилось в Sql 2008, и у меня есть клиентский DBworking в 2005 году – XYZ

0

Существует еще один подход для проведения аудита в SQL Server 2005 и следующих версиях в качестве альтернативы для триггеров: используйте предложение OUTPUT для любых операций DML. Вы можете обратиться к StackOverflow и MSDN о том, как его использовать. Я выполнил предложение PUTPUT во время операций DML и вставил данные в таблицу Audittrail. Самое лучшее в выводах вывода заключается в том, что они имеют доступ к «вставленным» & «удаленным» таблицам, таким как триггеры.

В противном случае попробуйте функцию ChangeTracking SQL-сервера.

Спасибо!