У меня есть сценарий, в котором мне нужно проверить, нужно ли обновлять строки в целевой базе данных из исходной базы данных.Исходные данные на самом деле являются представлениями, а данные из этого представления помещаются в таблицу назначения.Поскольку исходное представление собирает / сворачивает / сводит данные из нескольких базовых таблиц, у нас нет действительно хорошего способа изменить схему для поддержки отслеживания изменений, поэтому я подумал о том, чтобы вычислить хэш данных каждой строки и включить их какчасть зрения.Затем мы можем сравнить значение хеша в таблице назначения, чтобы увидеть, есть ли разница, и обновить соответственно.
Мне известны функции:
CHECKSUM
BINARY_CHECKSUM
HASHYBYTES
.Похоже, что CHECKSUM () или BINARY_CHECKSUM () - лучший вариант, но я не уверен, насколько хорошо он будет работать при просмотре с 50 столбцами и миллионами строк.Мне также известно, что сгенерированные контрольные суммы / хэши могут не отличаться даже после редактирования, но в этом случае это допустимо.
Так что вопрос: является ли подход хеш / контрольной суммы хорошим способом сделать это иесли да, то какую функцию лучше использовать?Или есть другой, более эффективный способ решения этой проблемы?
(О, сейчас мы работаем на SQL Server 2005, но скоро перейдем на 2008R2, если это поможет.)