SQL Server 2008 - проверка изменений строк - PullRequest
0 голосов
/ 27 апреля 2011

Вместо того, чтобы использовать тонну операторов или, чтобы проверить, была ли изменена строка, я искал контрольную сумму () или binary_checksum ().Какова лучшая практика для этой ситуации?Использует ли он контрольную сумму (), binary_checksum () или какой-либо другой метод?Мне нравится идея использовать один из вариантов контрольной суммы, поэтому мне не нужно создавать массив или оператор для моего обновления.

РЕДАКТИРОВАТЬ: Извините всех, я должен был предоставить большеподробно.Мне нужно получить данные из некоторых внешних источников, но поскольку я использую репликацию слиянием, я не хочу просто раздувать и перестраивать таблицы.Я хочу обновить или вставить только те строки, которые действительно имеют изменения или не существуют.У меня будет целая версия исходных данных в моей целевой базе данных, которая будет синхронизирована с клиентами.Я пытался найти хороший способ обнаружить изменения строки, не просматривая каждый столбец для выполнения обновления.

Любые предложения приветствуются.

Спасибо,

S

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Во-первых, если вы используете реальную репликацию слиянием, она должна позаботиться об обновлении подходящих для вас строк.

Во-вторых, обычно способ определить, изменилась ли строка, состоит в использовании столбца с типом данных timestamp, который теперь называется rowversion, который изменяется каждый раз, когда строка обновляется. Однако этот тип столбца будет сообщать вам только об изменении значения с момента последнего чтения значения, что означает, что вы должны были прочитать и сохранить временные метки для использования в сравнении. Таким образом, это может не сработать для вас.

Наконец, решение, которое может работать для вас, - это триггеры в рассматриваемой таблице, которые обновляют фактический столбец DateTime (или еще лучше, DateTime2) с текущей датой и временем, когда происходит вставка. Для сравнения потребуется сохранить дату и время последней синхронизации с таблицей и сравнить эту дату и время в последнем обновленном столбце, чтобы определить, какие строки были изменены.

0 голосов
/ 27 апреля 2011

Это может помочь, если у нас есть немного больше информации о том, что вы делаете, но в целом опция checkum () работает хорошо, если у вас есть доступ к исходной контрольной сумме строки для сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...