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


Manage Identity Columns (Управление столбцами идентификаторов)

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

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

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

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

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

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

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

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

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

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

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

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

  1. Если издатель работает с версией SQL Server до SQL Server 2005 (9.x), на странице "Тип публикации" мастера создания публикации выберите публикацию слиянием или публикацию транзакций с обновлением подписок.

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

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

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

  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 . Укажите значение 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. Дополнительные сведения о времени назначения диапазонов идентификаторов см. в разделе Assigning Identity Ranges (Назначение диапазонов идентификаторов) статьи Replicate Identity Columns (Репликация столбцов идентификаторов).

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