Якщо джерело вставлено, дайте йому IDENTITY
стовпець. Під час передачі даних ви записуєте найвище значення, написане впоперек. Під час наступного перенесення вам потрібен лише запит на значення, більші за значення, зафіксовані під час попереднього перенесення. Ми робимо це для передачі записів журналів до сховища даних.
Для оновлення рядків додайте "брудний" прапор. Він матиме три значення - чисті, брудні та видалені. Щоденні запити повинні будуть опускати рядки, прапор яких встановлено на "видалено". Це буде дорого в обслуговуванні, тестуванні та експлуатації. Після великого запиту ви згадуєте всі рядки, позначені для видалення, потрібно видалити, а прапор скинути для всіх інших. Це не буде добре масштабуватися.
Більш легкою альтернативою для зміни збору даних є відстеження змін . Він не скаже вам, які значення змінилися, лише що рядок змінився з моменту останнього запиту. Вбудовані функції полегшують пошук змінених значень та управління відстеженням. Ми досягли успіху з використанням КТ для обробки приблизно 100 000 змін на день у таблиці 100 000 000 рядків.
Повідомлення про запити діють на більш високому важелі - на рівні набору результатів. Концептуально це як визначення точки зору. Якщо SQL Server виявить, що будь-яка рядок, повернутий через цей вид, змінився, він надсилає повідомлення в програму. Немає вказівки, скільки рядків змінилося, або які стовпці. Є лише прості повідомлення, які говорять про те, що "щось сталося". Це залежить від заявки, щоб запитувати та реагувати. Практично це набагато складніше, ніж це, як ви можете собі уявити. Існують обмеження щодо того, як можна визначити запит, і повідомлення може розпочатися за умов, відмінних від змінених даних. Коли повідомлення запускається, воно видаляється. Якщо згодом відбудеться подальша діяльність, яка цікавить, подальше повідомлення не надсилатиметься.
В контексті питання щодо ОП, QN матиме перевагу в тому, що він буде низьким, а також невеликими витратами на час роботи. Можливо, буде докладено значних зусиль для встановлення та підтримання жорсткого режиму реагування на підписку-повідомлення. Оскільки таблиця даних велика, ймовірно, в ній будуть часті зміни, тобто сповіщення, ймовірно, запустить у більшості циклів обробки. Оскільки немає вказівок на те, що змінити інкрементальну обробку дельти не буде можливим, як це було б із КТ або CDC. Накладні витрати через помилкове спрацьовування спрацьовують, але навіть у гіршому випадку дорогий запит не потрібно запускати частіше, ніж зараз.