Столбец идентификаторов SQL Server 2000/2005 + репликация
-
03-07-2019 - |
Вопрос
Я уже просмотрел некоторые ресурсы и просто хочу внести ясность и получить мнение.
Прежде всего, чтобы полностью избежать каких-либо проблем, мы могли бы просто не утруждать себя использованием столбцов идентификаторов в качестве первичных ключей, вместо этого сгенерировать их самостоятельно и просто реплицировать эти значения обоими способами, предполагая, что они всегда уникальны в любой момент создания.
Для целей этого вопроса я говорю о двух или более способах репликации для решения проблем глобального доступа, и у нас действительно есть столбцы идентификаторов.
Теперь мы настраиваем репликацию транзакций, и обе базы данных должны реплицироваться друг с другом.
Насколько я понимаю, вы выделяете диапазон начальных значений для каждого сервера базы данных, и он будет использовать их, вы знаете, что есть уникальная причина, по которой вы указали диапазоны, которые не пересекаются.Итак, означает ли это, что во время репликации эти значения вставляются в начальный столбец?
итак, если вы распределите диапазоны 1-10 и 11-20 на 2 сервера, как только каждый сервер вставит 10 строк, у вас будут начальные значения 1-20 в обеих базах данных?
Решение
Есть такой вариант "НЕ ДЛЯ РЕПЛИКАЦИИ" это может быть применено к столбцам идентификаторов (а также к триггерам и другим ограничениям).
В вашем примере server1 будет содержать 1-10, но просто примет реплицированные 11-20.
Несколько способов посева ваших семян:
Либо:установите начальное значение / приращения с помощью параметра НЕ ДЛЯ РЕПЛИКАЦИИ следующим образом
- Начальное значение 1, приращение 2
- Начальное значение 2, приращение 2
- Начальное значение -1, приращение -2
- Начальное число -2, приращение -2
- Начальное значение 1000000001, приращение 2
- Начальное значение 1000000002, приращение 2
- Начальное число -1000000002, приращение -2
- Начальное число -1000000001, приращение -2
Это дает вам 500 000 000 долларов на сервер для 8 серверов
Или:Добавьте второй столбец с именем ServerID для предоставления составных ключей, не используйте ДЛЯ РЕПЛИКАЦИИ для столбца ID
Это масштабируется, скажем, до 256 серверов для tinyint с 2 ^ 32 строками на сервер
Работает в любом случае...