Поделиться через


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

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

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

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

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

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

Использование среды 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 , введите значения для параметров в следующей таблице. Дополнительные сведения об использовании данных настроек см. в разделе "Назначение диапазонов идентификаторов" статьи Replicate Identity Columns (Репликация столбцов идентификаторов).

    Параметр Значение Описание
    Размер диапазона издателя Целое значение для размера диапазона (например, 20 000). Дополнительные сведения см. в разделе "Назначение диапазонов идентификаторов" статьи Replicate Identity Columns (Репликация столбцов идентификаторов).
    Размер диапазона на стороне подписчика Целое значение для размера диапазона (например, 10000). Дополнительные сведения см. в разделе "Назначение диапазонов идентификаторов" статьи Replicate Identity Columns (Репликация столбцов идентификаторов).
    Процентный порог выделения диапазона Целое значение для процентного порога (например, 90 эквивалентно 90 процентам). Процент общего числа значений идентификаторов, используемый в узле до задания нового диапазона идентификаторов.

    Примечание. Данное значение должно быть указано, но оно используется только подписчиками, использующими подписки, обновляемые посредством очередей, а также подписчиками публикаций слиянием, на которых выполняется SQL Server Compact или предыдущие версии других выпусков SQL Server. Дополнительные сведения см. в разделе "Назначение диапазонов идентификаторов" статьи Replicate Identity Columns (Репликация столбцов идентификаторов).
    Начальное значение следующего диапазона Целое значение. Только для чтения. Значение, с которого начнется следующий диапазон. Например, если текущий диапазон 5001-6000, то это значение будет равно 6001.
    Максимальное значение идентификатора Целое значение. Только для чтения. Наибольшее значение для столбца идентификаторов. Определяется базовым типом данных столбца.
    Приращение Целое значение. Только для чтения. Значение, на которое должно увеличиться или уменьшиться для каждой вставки значение в столбце идентификаторов. Обычно используется значение 1.
  6. Нажмите кнопку ОК.

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

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

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

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

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

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

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

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

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

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

    Примечание

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

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

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

  2. Назначьте диапазоны для столбцов идентификаторов в статье на подписчике, чтобы избежать возникновения конфликтов при обновлении подписчиков. Дополнительные сведения см. в разделе Assigning ranges for manual identity range management (Назначение диапазонов для управления диапазонами идентификаторов вручную) статьи Replicate Identity Columns (Репликация столбцов идентификаторов).

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

  1. В базе данных публикации на издателе выполните процедуру sp_addmergearticle. Если опубликованная исходная таблица содержит столбец идентификаторов, укажите значение auto для @identityrangemanagementoption, диапазон значений идентификаторов, назначенных серверной подписке для @pub_identity_range, диапазон значений идентификаторов, назначенных издателю и каждой клиентской подписке для @identity_range, а также процент от общего числа значений идентификаторов, используемых до назначения нового диапазона идентификаторов для @threshold. Дополнительные сведения о времени назначения диапазонов идентификаторов см. в разделе Assigning Identity Ranges (Назначение диапазонов идентификаторов) статьи Replicate Identity Columns (Репликация столбцов идентификаторов). Дополнительные сведения об определении статей см. в этой статье.

    Примечание

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

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

  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 . Укажите пороговое значение для @property и новое пороговое значение для @value.

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

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

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

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

    • Чтобы изменить пороговое значение, с которого назначаются диапазоны идентификаторов, выполните на издателе в базе данных публикации хранимую процедуру sp_changemergearticle . Укажите пороговое значение для @property и новое пороговое значение для @value. Дополнительные сведения о времени назначения диапазонов идентификаторов см. в разделе Assigning Identity Ranges (Назначение диапазонов идентификаторов) статьи Replicate Identity Columns (Репликация столбцов идентификаторов).

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

См. также:

Peer-to-Peer Transactional Replication
Replication System Stored Procedures Concepts
Репликация столбцов идентификаторов