Управление столбцами идентификаторов

В этом разделе описывается управление столбцами идентификаторов в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL. Если операции вставки с подписчика реплицируются обратно на издатель, необходимо управлять столбцами идентификаторов, чтобы избежать присваивания одинаковых значений идентификаторов на подписчике и издателе. Репликация может управлять диапазонами идентификаторов автоматически, или можно управлять диапазонами идентификаторов вручную. Сведения о параметрах управления диапазонами идентификаторов, предоставляемых репликацией, см. в разделе Репликация столбцов идентификаторов.

В этом разделе

  • Перед началом работы выполните следующие действия.

    Рекомендации

  • Для управления столбцами идентификаторов используются:

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Рекомендации

  • При публикации таблицы в нескольких публикациях необходимо указать одинаковые параметры управления диапазонами идентификаторов для всех публикаций. Дополнительные сведения см. в подразделе «Публикация таблиц в нескольких публикациях» раздела Публикация данных и объектов базы данных.

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды SQL Server Management Studio

Укажите параметр управления столбцами идентификаторов на вкладке Свойства диалогового окна Свойства статьи — <статья> мастера создания публикации. Дополнительные сведения об использовании этого мастера см. в разделе Создание публикации. В мастере создания публикации выполните следующие действия.

  • Если выбрана настройка Публикация слиянием или Публикация транзакций с обновляемыми подписками на странице Тип публикации, выберите автоматическое или ручное управление диапазонами идентификаторов (рекомендуется автоматический режим, используемый по умолчанию). После публикации таблицы данное свойство невозможно изменить, но другие связанные свойства изменить можно.

  • При выборе других типов публикаций должен быть установлен ручной режим управления диапазонами идентификаторов.

Диапазоны идентификаторов и пороговые значения можно изменить на вкладке Свойства страницы Свойства статьи — <статья>, которая доступна в диалоговом окне Свойства публикации — <публикация>. Дополнительные сведения о доступе к этому диалоговому окну см. в разделе Просмотр и изменение свойств публикации.

Указание параметра управления столбцом идентификаторов

  1. Если на издателе запущена версия SQL Server, более ранняя, чем SQL Server 2005, то на странице Тип публикации мастера создания публикаций выберите Публикация слиянием или Публикация транзакций с обновляемыми подписками.

  2. На странице Статьи выберите таблицу со столбцом идентификаторов.

  3. Щелкните Свойства статьи, затем щелкните Указать свойства выделенной статьи таблицы.

  4. На вкладке Свойства диалогового окна Свойства статьи — <статья> в разделе Управление диапазоном идентификаторов установите для свойства Автоматически управлять диапазонами идентификаторов значение Автоматически или Вручную (для издателей, использующих SQL Server 2005 или более поздние версии) либо True или False (для издателей, использующих версию SQL Server, более раннюю, чем SQL Server 2005).

  5. Если на шаге 4 выбрано Автоматически или True, введите значения для параметров в следующей таблице. Дополнительные сведения об использовании данных настроек см. в подразделе «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов.

    Параметр

    Значение

    Описание

    Размер диапазона издателя

    Целое значение для размера диапазона (например, 20000).

    См. подраздел «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов.

    Размер диапазона на стороне подписчика

    Целое значение для размера диапазона (например, 10000).

    См. подраздел «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов.

    Процентный порог выделения диапазона

    Целое значение для процентного порога (например, 90 эквивалентно 90 процентам).

    Процент общего числа значений идентификаторов, используемый в узле до задания нового диапазона идентификаторов.

    ПримечаниеПримечание

    Данное значение должно быть указано, но оно используется только подписчиками, использующими подписки, обновляемые посредством очередей, а также подписчиками публикаций слиянием, на которых выполняется SQL Server Compact или предыдущие версии других выпусков SQL Server. Дополнительные сведения см. в подразделе «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов.

    Начальное значение следующего диапазона

    Целое значение. Только для чтения.

    Значение, с которого начнется следующий диапазон. Например, если текущий диапазон 5001-6000, то это значение будет равно 6001.

    Максимальное значение идентификатора

    Целое значение. Только для чтения.

    Наибольшее значение для столбца идентификаторов. Определяется базовым типом данных столбца.

    Приращение

    Целое значение. Только для чтения.

    Значение, на которое число в столбце идентификаторов должно увеличиться или уменьшиться для каждой вставки: как правило, задано равным 1.

  6. Нажмите кнопку ОК.

Изменение диапазонов идентификаторов и пороговых значений после публикации таблицы

  1. На странице Статьи диалогового окна Свойства публикации — <публикация> выберите таблицу со столбцом идентификаторов.

  2. Щелкните Свойства статьи, затем щелкните Указать свойства выделенной статьи таблицы.

  3. На вкладке Свойства диалогового окна Свойства статьи — <статья> в разделе Управление диапазонами идентификаторов введите значения для одного или нескольких из следующих параметров: Размер диапазона издателя, Размер диапазона на стороне подписчика и Процентный порог выделения диапазона.

  4. Нажмите кнопку ОК.

  5. Нажмите кнопку ОК в диалоговом окне Свойства публикации — <публикация>.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование Transact-SQL

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

Включение автоматического управления диапазонами идентификаторов при определении статей для публикации транзакций

  • На издателе в базе данных публикации выполните процедуру sp_addarticle. Если в публикуемой исходной таблице имеется столбец идентификаторов, укажите значение auto в параметре @identityrangemanagementoption, диапазон значений идентификаторов, назначенный издателю, в параметре @pub_identity_range, диапазон значений идентификаторов, назначенный каждому подписчику, в параметре @identity_range и процент использованных значений идентификаторов, прежде чем назначить новый диапазон значений идентификаторов параметру @threshold. Дополнительные сведения об определении статей см. в разделе Определение статьи.

    ПримечаниеПримечание

    Убедитесь, что тип данных столбца идентификаторов достаточно большой, чтобы поддерживать полный диапазон идентификаторов, назначаемый всем подписчикам.

Отключение автоматического управления диапазонами идентификаторов при определении статей для публикации транзакций

  1. На издателе в базе данных публикации выполните процедуру sp_addarticle. Укажите значение manual в параметре @identityrangemanagementoption. Дополнительные сведения об определении статей см. в разделе Определение статьи.

  2. Назначьте диапазоны для столбцов идентификаторов в статье на подписчике, чтобы избежать возникновения конфликтов при обновлении подписчиков. Дополнительные сведения см. в подразделе «Назначение диапазонов для ручного управления диапазонами идентификаторов» раздела Репликация столбцов идентификаторов.

Включение автоматического управления диапазонами идентификаторов при определении статей для публикации слиянием

  • На издателе в базе данных публикации выполните процедуру sp_addmergearticle. Если в публикуемой исходной таблице имеется столбец идентификаторов, укажите значение auto в параметре @identityrangemanagementoption; диапазон значений идентификаторов, назначенный серверной подписке, в параметре @pub_identity_range; диапазон значений идентификаторов, назначенный издателю и каждой клиентской подписке, в параметре @identity_range; и процент значений идентификаторов, который должен быть использован перед назначением нового диапазона значений идентификаторов, в параметре @threshold. Дополнительные сведения о времени назначения диапазонов идентификаторов см. в подразделе «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов. Дополнительные сведения об определении статей см. в разделе Определение статьи.

    ПримечаниеПримечание

    Убедитесь, что тип данных столбца идентификаторов достаточно большой, чтобы поддерживать полный диапазон идентификаторов, назначаемый всем подписчикам, особенно для подписчиков с серверными подписками.

Отключение автоматического управления диапазонами идентификаторов при определении статей для публикации слиянием

  1. На издателе в базе данных публикации выполните процедуру sp_addmergearticle. Укажите одно из следующих значений в параметре @identityrangemanagementoption:

    • manual — диапазоны идентификаторов должны назначаться вручную для обновляемых подписчиков;

    • none — столбцы идентификаторов на издателе не будут определяться как столбцы идентификаторов на подписчике.

    Дополнительные сведения об определении статей см. в разделе Определение статьи.

  2. Назначьте диапазоны для столбцов идентификаторов в статье на подписчике, чтобы избежать возникновения конфликтов при обновлении подписчиков.

Изменение настроек автоматического управления диапазонами идентификаторов для существующей статьи в публикации моментального снимка или публикации транзакций

  1. На издателе в базе данных публикации выполните хранимую процедуру sp_helparticle и проверьте значение параметра identityrangemanagementoption в результирующем наборе. Если это значение равно 0, автоматическое управление диапазонами идентификаторов отключено.

  2. Если значение identityrangemanagementoption в результирующем наборе равно 1, измените настройки следующим образом.

    • Чтобы изменить назначенные диапазоны идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changearticle. Укажите значение identity_range или pub_identity_range в параметре @property и задайте новое значение диапазона в параметре @value.

    • Чтобы изменить пороговое значение, с которого назначаются диапазоны идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changearticle. Укажите значение threshold в параметре @property и задайте новое значение порога в параметре @value.

Изменение настроек автоматического управления диапазонами идентификаторов для существующей статьи в публикации слиянием

  1. На издателе в базе данных публикации выполните хранимую процедуру sp_helpmergearticle и проверьте значение параметра identity_support в результирующем наборе. Если это значение равно 0, автоматическое управление диапазонами идентификаторов отключено.

  2. Если значение identity_support в результирующем наборе равно 1, измените настройки следующим образом.

    • Чтобы изменить назначенный диапазон идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changemergearticle. Укажите значение identity_range или pub_identity_range в параметре @property и задайте новое значение диапазона в параметре @value.

    • Чтобы изменить пороговое значение, с которого назначаются диапазоны идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changemergearticle. Укажите значение threshold в параметре @property и задайте новое значение порога в параметре @value. Дополнительные сведения о времени назначения диапазонов идентификаторов см. в подразделе «Назначение диапазонов идентификаторов» раздела Репликация столбцов идентификаторов.

    • Чтобы отключить автоматическое управление диапазонами идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changemergearticle. Укажите значение identityrangemanagementoption в параметре @property и значение manual или none в параметре @value.

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Основные понятия

Одноранговая репликация транзакций

Основные понятия системных хранимых процедур репликации

Репликация столбцов идентификаторов