Сбор данных об изменениях Отслеживание всех изменений в полях, даже если они назначены только для нескольких полей в таблице Dynamics Axe.

Я включил сбор данных об изменениях для 5 полей в таблице, которая имеет 10 полей для базы данных Dynamics axe.

В тех 5 полях, которые я изменил, доступно поле. Поэтому всякий раз, когда я изменяю поле в этих 10 полях, модифицированных By, они будут меняться и отслеживать их в таблицах CDC. Но я не хочу отслеживать изменения в таблицах CDC, если в других 5 полях есть изменения, которые не отслеживаются.

например: Таблица1

A B C D E F G H I J(MODIFIEDBY)
1 2 3 4 5 6 7 8 9 10
8 6 4 3 2 4 5 6 7 8

Я отслеживаю G, H, I, J, F. Но поле J — это полеmodatedBy, которое меняется каждый раз, когда вы вносите изменения в любое из девяти полей. Поэтому, если вы внесете изменения в поле A, J обновится, чтобы CDC зафиксировал транзакцию. Который я не хочу отслеживать.

Не могли бы вы предложить мне какое-нибудь решение для этого. Заранее спасибо.


person Raas    schedule 02.01.2015    source источник


Ответы (1)


Поле ModifiedBy обновляется системой каждый раз при обновлении записи, независимо от того, какое поле было изменено.

Итак, вы должны либо:

  • остановить сбор данных поля ModifiedBy

or:

  • создайте свое собственное поле, которое будет обновляться при обновлении 5 полей, скажем, SomeFieldsModifiedBy

Обновление этого поля тривиально:

public void update()
{
    if (this.G != this.orig().G || this.H != this.orig().H || ...)
        this.SomeFieldsModifiedBy = curUserId();
    super();
}

Также рассмотрите возможность обновления поля при вставке.

person Jan B. Kjeldsen    schedule 03.01.2015
comment
Привет, спасибо за ответ. Вы правы, что мы можем сделать так. Но это почти похоже на ведение журнала базы данных, что вызывает некоторые накладные расходы на производительность. Мы планируем снизить накладные расходы на производительность, поэтому выбираем CDC. Есть ли другие варианты????? - person Raas; 06.01.2015
comment
Вы можете отключить свойство CreatedBy в таблице. - person Jan B. Kjeldsen; 06.01.2015
comment
Привет, Ян, спасибо за ответ. Я согласен, что это решение для достижения того, о чем я просил. Но мы ищем любые другие решения, кроме этого. Потому что это похоже на включение ведения журнала базы данных в ax, что приводит к снижению производительности. Есть ли у нас какие-либо другие решения, кроме создания нового поля и написания кода, обновления этого поля и отслеживания его? - person Raas; 06.01.2015
comment
Я не согласен с тем, что создание нового поля для специальной цели напоминает ведение журнала базы данных. Также накладными расходами можно пренебречь. - person Jan B. Kjeldsen; 06.01.2015
comment
Спасибо за ответ, Ян. На самом деле у нас есть больше таблиц, которые нужно сделать. Поэтому нам нужно сделать это во всех этих таблицах. Затем я узнал, что таким же образом работает ведение журнала базы данных. Я видел много сообщений, в которых говорится, что ведение журнала базы данных снижает производительность. - person Raas; 08.01.2015
comment
Добавление поля не похоже на ведение журнала базы данных. У вас остается два варианта ответа. - person Jan B. Kjeldsen; 08.01.2015
comment
Я еще раз протестирую эти сценарии и обновлю. Спасибо . - person Raas; 09.01.2015