Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
892
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Какие посоветуете средства аудита изменений данных в MSSQL?
Просмотров: 371
 
Ответов: 3
Какие посоветуете средства для аудита изменений данных в MSSQL (нужно сохранять изменение всех полей), где связка mssql + NHibernate.
Из того что нашёл, это:
1. Повесить на тригеры в базу данных запись истории в таблицы с историей.
2. В самом NHibernate повесить обработчики в Interceptors или EventListeners и писать в таблицы с историей.
3. Использовать фичу 2008 MSSQL — Change Data Capture. Тут вопрос, стоит ли её для этого использовать, где-то читал «Основной сценарий, в котором предполагается использовать CDC — это „большие“ ETL (extraction, transformation, loading) приложения, которые асинхронно кусками перегоняют данные из OLTP системы в хранилище данных.»
Может есть готовые простые решения.
Первый вариант — самый простой. Реализация темпоральности за счет явного дублирования данных. Проблемы при этом — выборка данных за период (собственно, получение изменений). Чаще всего и применяется разработчиками, так как обычно делается под свои конкретные цели со своей бизнес-логикой при выборке изменений.
Второй вариант — те же яйца, только в профиль. Рекомендовал бы все-таки из этих двух выбрать первый (на уровне БД все же лучше организовывать темпоральность).
Третий — неплохой вариант. Основной сценарий — это то, на чем такая схема может применяться чаще и лучше всего. В вашем случае, эта штука также будет полезна.
Советую также обратить внимание на статью, в которой рассматривается темпоральность баз данных и предложения фирм-разработчиков по обеспечению этой самой темпоральности в СУБД.
Вот пример обсуждения темпоральности (хронологии изменений) касательно именно MSSQL. Думаю, тема может быть полезной.
зависит от нагрузки, если данных и изменений очень много и критично быстродействие, то только 3-й вариант CDC - может работать без нагрузки на основную БД (на выделенном сервере), однако требует MS-SQL Enterprise Edition
дополнительно посмотрите проект AutoAudit на codeplex - возможно вам подойдет.
разница между 1,3 и 2 вариантом, в том, что 1и3 вы будете видеть историю на физическом уровне БД (таблицы БД), во 2-ом на логическом уровне прикладных C# Объектов. Однако логировать придется либо на клиенте, либо на сервере приложений - может стать критично к памяти по количеству обрабатываемых записей (если в транзакции более 10тысяч изменений). Опять же если у вас в БД есть хранимые процедуры, то во 2-ом варианте вы упустите из аудите их изменения
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться