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

Применимо к:SQL Server

В этом разделе описывается управление секциями для публикации слиянием с параметризованными фильтрами в SQL Server с помощью SQL Server Management Studio, Transact-SQL или объектов управления репликацией (RMO). Параметризованные фильтры строк могут быть использованы для формирования неперекрывающихся секций. Такие секции могут быть ограничены таким образом, чтобы каждая данная секция предоставлялась только одной подписке. В таком случае, чем больше число подписчиков, тем большее число секций потребуется, а это, в свою очередь, приведет к необходимости создания такого же числа секционированных моментальных снимков. Дополнительные сведения см. в разделе Параметризованные фильтры строк.

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

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

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

  • Если в соответствии с рекомендациями создается скрипт топологии репликации, скрипты публикации содержат вызовы хранимых процедур для создания секций данных. Скрипт содержит справочную информацию для созданных секций и способ воссоздания одной или нескольких секций в случае необходимости. Дополнительные сведения см. в разделе Scripting Replication.

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

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

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

Создание секции

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

  2. В диалоговом окне Добавить секцию данных введите значение HOST_NAME() и/или значение SUSER_SNAME() , связанное с секцией, которую требуется создать.

  3. При необходимости задайте расписание обновления моментальных снимков.

    1. Установите флажок Запланировать запуск агента моментальных снимков для этой секции в следующее время.

    2. Примите используемое по умолчанию расписание обновления моментальных снимков или щелкните Изменить , чтобы указать другое расписание.

  4. Нажмите ОК.

Удаление секции

  1. На странице Секции данных выберите секцию в сетке.

  2. Нажмите Удалить.

Разрешение подписчикам запускать создание и доставку моментальных снимков

  1. На странице Секции данных выберите Автоматически определять секцию и, при необходимости, создавать моментальный снимок при попытке синхронизации от нового подписчика.

  2. Нажмите ОК.

Создание моментального снимка секции

  1. На странице Секции данных выберите секцию в сетке.

  2. Щелкните Создать выбранные моментальные снимки.

Очистка моментального снимка секции

  1. На странице Секции данных выберите секцию в сетке.

  2. Щелкните Очистить существующие моментальные снимки.

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

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

  • Фильтрация секции (с помощью SUSER_SNAME (Transact-SQL) или HOST_NAME (Transact-SQL)).

  • Имя задания, которым формируется секционированный моментальный снимок.

  • Время последнего запуска задания секционированного снимка.

Если вторая часть снимка, состоящего из двух частей, может быть сформирована по запросу в момент инициализации новой подписки, то приведенные ниже процедуры позволят выполнить предварительное формирование снимка в подходящее время и управлять его формированием. Дополнительные сведения см. в статье Snapshots for Merge Publications with Parameterized Filters.

Просмотр информации о существующих секциях

  1. На издателе в базе данных публикации выполните sp_helpmergepartition (Transact-SQL). Укажите имя публикации в параметре @publication. (Необязательно) Укажите с помощью параметра @suser_sname или @host_name, что нужно вернуть данные на основе одного критерия фильтрации.

Определение новой секции и формирование нового секционированного снимка

  1. На издателе в базе данных публикации выполните sp_addmergepartition (Transact-SQL). Укажите имя публикации в параметре @publication, а также параметризованное значение, определяющее секцию, в одном из следующих параметров:

    • @suser_sname— при определении параметризованного фильтра значением, возвращаемым SUSER_SNAME (Transact-SQL).

    • @host_name— при определении параметризованного фильтра значением, возвращаемым HOST_NAME (Transact-SQL).

  2. Создайте и инициализируйте параметризованный снимок для новой секции. Дополнительные сведения см. в статье Создание моментального снимка для публикации слиянием с параметризованными фильтрами.

Удаление секции

  1. На издателе в базе данных публикации выполните sp_dropmergepartition (Transact-SQL). Укажите имя публикации в параметре @publication, а также параметризованное значение, определяющее секцию, в одном из следующих параметров:

    • @suser_sname— при определении параметризованного фильтра значением, возвращаемым SUSER_SNAME (Transact-SQL).

    • @host_name— при определении параметризованного фильтра значением, возвращаемым HOST_NAME (Transact-SQL).

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

При помощи объектов RMO

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

  • Значение и функция фильтрации, на которых базируется секция.

  • Имя задания, формирующего параметризованный снимок для подписчика.

  • Время последнего выполнения задания параметризованного моментального снимка.

Просмотр информации о существующих секциях

  1. Создайте соединение с издателем с помощью класса ServerConnection .

  2. Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName , а также установите созданное на шаге 1 соединение ConnectionContext в качестве значения для свойства ServerConnection .

  3. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.

  4. Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition .

  5. Для каждого объекта MergePartition в массиве доступны любые интересующие свойства.

Удаление существующих секций

  1. Создайте соединение с издателем с помощью класса ServerConnection .

  2. Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName , а также установите созданное на шаге 1 соединение ConnectionContext в качестве значения для свойства ServerConnection .

  3. Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.

  4. Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition .

  5. Определите для каждого объекта MergePartition в массиве, необходимо ли удаление соответствующей секции. Решение обычно принимается исходя из значения свойств DynamicFilterLogin и DynamicFilterHostName .

  6. Вызовите метод RemoveMergePartition объекта MergePublication , созданного на шаге 2. Передайте объект MergePartition , созданный на шаге 5.

  7. Повторите шаг 6 для каждой удаляемой секции.

См. также

Параметризованные фильтры строк
Snapshots for Merge Publications with Parameterized Filters (Моментальные снимки для публикаций слиянием с параметризованными фильтрами)