|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|||||||||||
Замена Change Data Capture28.07.2010, 01:34. Показов 3792. Ответов 5
Метки нет (Все метки)
У меня стоит MS SQL Server 2008 Standard Edition.
Мне нужно для нескольких таблиц создать data change log - записывать кто, когда и что изменил. Есть в MS SQL Server 2008 такая фича как Change Data Capture. Вроде как понравилась, но проблема в том что она показывает только последнее изменение (чтоб показывало всю историю вроде как нужен Enterprise Edition), плюс мне надо знать какой юзверь это изменение сделал... Думаю что такое делалось и не раз. В итоге думаю, буду делать сам на тригерах. Вопрос такой, так как отслеживать нужно несколько таблиц (может все) хорошо бы создать одну таблицу куда можно было бы сбрасывать изменения для всех таблиц со структурой типа: (TableID, RecordID, ChangeDateTime, UserID, OldValues, NewValues) и на триггере записывать каждую запись из inserted/deleted в эту таблицу. Вопрос - Чтоб не писать тригер для каждой таблицы индивидуально, существует ли хороший/удобный способ собрать (конкатенировать) значения всех полей (скажем в формате CSV) в одну переменную чтоб записать в OldValues или в NewValues? Ссылки на похожие решения? Добавлено через 3 часа 41 минуту Но это не то что хотел, но нашел неплохое решение, чуть подправить и вперед:
0
|
|||||||||||
| 28.07.2010, 01:34 | |
|
Ответы с готовыми решениями:
5
Is it possible to change the default MS SQL data path? K8 NPT Data change...Update new data to DMI DataGrid focus change, selection change |
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
|||||||||||
| 29.07.2010, 23:21 [ТС] | |||||||||||
|
Нашел способ сделать так как я хочу - с помощю XML преобразований.
Вот как записать все столбцы одной записи таблицы в одно поле и прочитать обратно как строку
А вот так записать все столбцы нескольких записей таблицы в одно поле и прочитать обратно как строки:
Закончу - поделюсь что получилось...
0
|
|||||||||||
|
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
|
|
| 29.07.2010, 23:37 | |
|
Это все конечно здорово и нечто подобное я тоже делал, но я не смог найти приемлимого способа логировать блобы.
0
|
|
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
||||||
| 30.07.2010, 00:09 [ТС] | ||||||
|
а вот таблица:
Не проверял, так как в данный момент BLOB-ов нет которых надо отслеживать. Можно тип XML заменить на VARCHAR(MAX) но вряд ли это улучшит ситуацию ![]() я бы блобы игнорировал бы...
0
|
||||||
|
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
|
||||||||||||||||||||||||||||||||||||
| 05.08.2010, 19:08 [ТС] | ||||||||||||||||||||||||||||||||||||
|
Вот решил поделиться с тем, что у меня получилось.
На мой взгляд получилось довольно элегантно:
Итак, собственно SQL скрипт для создания всех указанных выше объектов
Вот так включаем систему отслеживалиния для любой таблицы:
а так найденную нами строку с изменениями (скажем ID = 10) мы конвертируем XML в табличную форму:
Система получилась универсальной и все работает довольно быстро. Скорость для моих целей меня вполне устраивает, но если понадобится, в будущем для увеличения скорости можно было бы в таблицу изменений tb_secDataTrail добавить поле
Тогда индекс нужно будет подправить как:
Вышеописанное мною найденное решение - абсолютно готовое универсальное решение для любых таблиц и систем - используйте
0
|
||||||||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
|
|
| 05.12.2012, 18:56 | |
|
Здравствуйте. Спасибо автору, хороший пример. А какие манипуляции надо сделать чтобы не потерять при преобразовании в xml текстовую информацию содержащую знаки пробел %, \ /
0
|
|
| 05.12.2012, 18:56 | |
|
Помогаю со студенческими работами здесь
6
Замена данных в Access с использованием master data (или иным способом) Wildcard capture Video capture API
Variadic template lambda capture Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|