powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Протоколирование изменений в БД
25 сообщений из 69, страница 2 из 3
Протоколирование изменений в БД
    #33229305
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suser_sname() вернет нужного юзера без проблем.

-- Tygra's --
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33229432
CREATE TRIGGER journal_delete
ON dbo.JOURNAL
FOR delete
AS
insert into logjournal (NREC,NOMER,DATA,FIO,AGE,CKLKONTR,POLIS,DNA,DKO,VALID,TELADR,DIAGNOZ,
ZAMPO,CKLPROVIDER,STAM,DISP,SUMMA,VAL,CASH,STATUS,VREMK,MESTO,COMNAME,
CKLSTRANA,CTUR,VDATE,FIO_ENG,PRIM,OB_DIAG,
DE,KOGDA,KTO,OTKUDA)
select NREC,NOMER,DATA,FIO,AGE,CKLKONTR,POLIS,DNA,DKO,VALID,TELADR,DIAGNOZ,
ZAMPO,CKLPROVIDER,STAM,DISP,SUMMA,VAL,CASH,STATUS,VREMK,MESTO,COMNAME,
CKLSTRANA,CTUR,VDATE,FIO_ENG,PRIM,OB_DIAG,
'Удаление',getdate(),system_user,host_name()
from deleted

Вот пример тригера на удаление. (на живой базе работает прекрасно.
и возвращает и Доменное имя пользователя и Компьютер с которого было совершено удаление.
MS SQL 2000 - SP3 (8.00.760)

нет ни каких проблем при WinAut!
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33238734
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему вопрос не в протоколировании изменений, а в том, что собственно нужно протоколировать. А всякие академические споры, можно ли это сделать на триггерах или на процедурах или вообще не делать - так это фигня. В зависимости от сервера БД можно реализовать практически все что нужно.
негатиф, незачот, афтар не пеши больше.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33239320
AlexG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КПо-моему вопрос не в протоколировании изменений, а в том, что собственно нужно протоколировать. А всякие академические споры, можно ли это сделать на триггерах или на процедурах или вообще не делать - так это фигня. В зависимости от сервера БД можно реализовать практически все что нужно.
негатиф, незачот, афтар не пеши больше.
Вообще-то требование именно такое: хранить все изменения любого поля, проводимые над акционерами; иметь возможность откатить на любую дату, просмотреть кто сделал изменение данного поля и пр. и пр.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33239461
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда сделать отдельную таблцу, где хранить имя атрибута, юзера и датувремя изменений, вобщем полный хистори над таблицей.
Если это глобальная шиза, тогда все справочники хранить по Тецнеру и соответственно также привязать историю.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33240423
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как это - "по Тецнеру"? (Или по Тенцеру?)
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33253418
Gary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня реализовано нечто похожее на предложенное Тигрой и Первым Андерсом

1. На каждую таблицу создается ее слепок (Customer -> CustomerHistory etc)
Она имеет все поля, как оригинальная, плюс ДВА новых: ValidFrom и ValidTo
PrimaryKey - identity, первичный ключ из оригинальной таблицы - кластерный во таблице истории, альтернативный ключ - первичный ключ из оригинальной таблицы плюс ValidFrom и ValidTo.
2. На оригинальной таблице пишем триггеры.
Вставка пишет в поле ValidFrom значение GETDATE(), а в ValidTo - 01/01/3000 (баг 3000 заложен в дизайне!)
Удаление записи вызывает делает следующее: для записи с тем же ключом, что в главной таблице, имеющей ValidTo равное 01/01/3000, ValidTo выставляется в GETDATE().
Изменение любого поля вызывает два действия: сначала алгоритм для удаления, а потом для вставки.

Таким образом, чтобы получить
текущее состояние, надо принести записи с ValidTo 01/01/3000
состояние на конкретную дату MyDate BETWEEN ValidFrom AND ValidTo

В моем проекте я поддерживаю историю для 10-и таблиц, нареканий по скорости не было. Правда, дата в них не меняется очень часто, экстремальных нагрузок не проверял. Задача была связать заказ с ценой заказа на момент его выполнения (под ценой подразумевается еще туча характеристик, которые невыгодно хранить в истории заказа). Запрос на миллионах заказов нареканий не вызывал.


Второе решение еще проще. Сходите на сайт www.apexsql.com, продукт ApexAudit, если не ошибаюсь
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33261595
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra авторНу видимо товарисчу требуетсяч перевод:

ЗЫ Не, найду время и выложу эту хрень. Пусть кому-то будет легче.

-- Tygra's --
Ну давай уже выложи! А то все обещаешь, да обещаешь... Мне вот, например, было бы очень интересно посмотреть.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262011
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте очень грамотную статью http://www.sql.ru/articles/mssql/2005/030701ChangesLogging.shtml
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262218
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Почитайте очень грамотную статью

А чего здесь грамотного, можно поинтересоваться? Бред, абсолютно оторванный от реальности.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262307
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

А чего здесь грамотного, можно поинтересоваться? Бред, абсолютно оторванный от реальности.

О! Узнаю мощный голос guest_xxx... Поинтересоваться то можно - но вы же опять ничего конкретного в ответ не скажите

В статье описаны возможные способы организации аудита изменений данных. Под аудитом здесь понимается именно административные средства контроля за данными и к самой архитектуре системы он отношения не имеет. Статья написана для DBA MS SQL сервера, но многое из нее актуально и для других СУБД
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262341
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> О!

Я тоже рад Вас слышать.

> В статье описаны возможные способы организации аудита изменений данных.

...абсолютно непригодные для реального применения.

> и к самой архитектуре системы он отношения не имеет.

Ну почему же? Там вроде было что-то о том, что регистрировались изменения, вносимые пользователями в структуру данных. Хотя, может, и невнимательно читал (жутко неудобно оформлено).

> Статья написана для DBA MS SQL сервера

Для dba? Не смешно. Для студентов первого курса, - это как бы более целевая аудитория.

Собственно, просмотрел текст по диагонали исключительно для того, чтобы иметь представление о том, что это за очень грамотные статьи - и бесплатно. Оказалось - как обычно - бред по мотивам мануалов. Лучше Шуклина читать, - смешнее.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262471
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriПочитайте очень грамотную статью http://www.sql.ru/articles/mssql/2005/030701ChangesLogging.shtml

Приятная статья, правда ниасилил, за время, которое я уделяю на чтение новостей.
Хорошо проделанная работа по сбору информации, стиль - присущий женскому обществу - простой и практичный.

Комментарии.
Изменение метаданных и изменение данных - я считаю вопросами разными с различным подходом в логировании.

метаданные.
Меня поразила прозаичность решения - сравнить 2 базы, чтобы узнать изменения... кто же так пишет проекты? база данных - это что мусорная куча, куда лезут все кому не лень и меняют структуру, бизнес логику?
По моему логировать должны программисты сами, указывая что они для конкретной задачи меняли с кратким описанием. Тогда это будет нормальная хистори.

данные.
Единственный совет любителям логирования - не перебарщивайте. Концепцию логирования естественно нужно делать на самом высоком уровне централизации лог-событий. Но не стоит включать логирование всего и вся, без причины на это. Поскольку все это утяжеляет работы БД, ее размер и прочее. Всегда нужно искать компромис между скоростью и функционалом, производительностью и стоимостью... немого отвлекся в сторону философии, но так и есть на самом деле...
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33262472
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри не в тот топик...
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33264608
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron tygra авторНу видимо товарисчу требуетсяч перевод:

ЗЫ Не, найду время и выложу эту хрень. Пусть кому-то будет легче.

-- Tygra's --
Ну давай уже выложи! А то все обещаешь, да обещаешь... Мне вот, например, было бы очень интересно посмотреть.

Времени нет, умираю от работы!!!!!!!!!!!!!!!!!
Даже форум раз в три дня читаю - вот до чего дошел! :)

Обесчаю в октябре выложить. Прямо-таки торжественно клянусь. Со всеми скриптами и т.д. Прямо рабочую систему.

-- Tygra's --
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33266304
M.Kap.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriПочитайте очень грамотную статью http://www.sql.ru/articles/mssql/2005/030701ChangesLogging.shtml

Еще не дочитал. Но статья показалась интересной хотя бы с точки зрения систематизации подходов.

А вот такой вопрос к уважаемой аудитории. Задачу "журналирования" отдельных записей можно расширить до сохранения версий совокупности записей.

Пример из банковской сферы:
Есть таблица в которой содержится информация о том как будет возвращаться кредит - множество пар (дата,сумма).
График погашения может меняться. Интерес представляет не знание того как изменилась та или инная дата или сумма, а как изменился график вцелом. Сколько версий графика имеется? и.т.д.

Конечно же версии совокупности записей можно восстановить по версиям записей из этой совокупности. Подобная задача решалась мною и решение оказалось довольно громоздким.

Что вы об этом думаете ?
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33266494
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Задачу "журналирования" отдельных записей можно расширить
> до сохранения версий совокупности записей.

Это не расширение задачи. Это один из способов ее постановки.

Любая база данных должна позволять извлекать состояние объектов на определенную дату.

> Конечно же версии совокупности записей можно восстановить по
> версиям записей из этой совокупности.

Я бы решил эту задачу, описав погашение кредита как процесс. Не вижу проблем.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33266523
M.Kap.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621>
Я бы решил эту задачу, описав погашение кредита как процесс. Не вижу проблем.

в двух словах , как ты это видишь?
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33267022
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> в двух словах , как ты это видишь?

Берем любую подходящую нотацию (например, IDEF3). С идеологической точки зрения операция кредитования (как процесс) не отличается от любого другого технологического процесса.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33267051
M.Kap.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> в двух словах , как ты это видишь?

Берем любую подходящую нотацию (например, IDEF3). С идеологической точки зрения операция кредитования (как процесс) не отличается от любого другого технологического процесса.

спасибо, посмотрю.
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33267077
M.Kap.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> в двух словах , как ты это видишь?

Берем любую подходящую нотацию (например, IDEF3). С идеологической точки зрения операция кредитования (как процесс) не отличается от любого другого технологического процесса.

А чем отличаются IDEF1, IDEF2. И вообще, это методология проектирования альтернативная UML ?
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33267172
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А чем отличаются IDEF1, IDEF2.

idefinfo.ru
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33267228
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему это уже флуд, а не обсуждение темы. Для решения такого элементарного действа, как методы логирования на практике все выросло в ахтунг какой-то....
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33270061
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M.Kap.

Берем любую подходящую нотацию (например, IDEF3).

Уважаемый guest_xxx не считает важным упомянуть что IDEF'ы никакого отношения к OOA/OOD не имеют так что если у вас они, то придется еще и изучить несколько непохожую методологию - которая вам к стати вряд ли в будущем пригодиться... Это к слову... Если же вам нужно будет описать процесс - то есть во-первых Activity Diagrams в UML, XPD (язык описания процессов на xml) и т.д.


Есть таблица в которой содержится информация о том как будет возвращаться кредит - множество пар (дата,сумма).
График погашения может меняться. Интерес представляет не знание того как изменилась та или инная дата или сумма, а как изменился график вцелом. Сколько версий графика имеется? и.т.д.

Ввести сущность график выплат и для него вести историю...


guest_xxx

Статья хороша еще и тем, что решает конкретную задачу - а именно аудит изменений данных. К сожалению, очень часто эта задача путается с ведением истории изменения какой-либо сущности предметной области (см. задачу про кредитный договор)
...
Рейтинг: 0 / 0
Протоколирование изменений в БД
    #33270467
M.Kap.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri M.Kap.


Есть таблица в которой содержится информация о том как будет возвращаться кредит - множество пар (дата,сумма).
График погашения может меняться. Интерес представляет не знание того как изменилась та или инная дата или сумма, а как изменился график вцелом. Сколько версий графика имеется? и.т.д.

Ввести сущность график выплат и для него вести историю...

В том то и дело, что сущность в БД выражается записью. Нет встроенной возможности создавать "векторные" сущности из многих записей.
Вот кабы, был табличный тип столбца ... а ля create table (col1 table)
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Протоколирование изменений в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]