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


Формирование фильтров

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

Параметры

В этом диалоговом окне используется трехступенчатый процесс создания фильтра строк на таблице. Затем фильтр распространяется на таблицы, связанные с фильтруемой таблицей связями первичного и внешнего ключей. Допустим, имеются три таблицы: Customer, SalesOrderHeader и SalesOrderDetail. Допустим, имеются связи между таблицами Customer и SalesOrderHeader, а также между SalesOrderHeader и SalesOrderDetail. Тогда, если фильтр строк применяется к таблице Customer, репликация распространяет этот фильтр на таблицы SalesOrderHeader и SalesOrderDetail.

  1. Выберите таблицу для фильтрации.

    Выберите таблицу из раскрывающегося списка. В этом списке присутствуют только те таблицы, которые были выбраны на странице Статьи.

  2. Завершите инструкцию фильтра, чтобы указать те строки таблицы, которые будут получать подписчики.

    Определите новую инструкцию фильтра. Список Столбцы содержит все столбцы, публикуемые из выбранной таблицы в поле Выберите таблицу для фильтрации. Текстовая область Инструкция фильтра содержит текст по умолчанию в следующей форме:

    SELECT <published_columns> FROM [tableowner].[tablename] WHERE

    Этот текст не может быть изменен; введите предложение фильтра после ключевого слова WHERE, используя обычный синтаксис Transact-SQL.

    Важное примечаниеВажно!

    Из соображений производительности не рекомендуется применять функции к именам столбцов в предложениях параметризованных фильтров строк, таких как LEFT([MyColumn]) = SUSER_SNAME(). Если в предложении фильтра используется HOST_NAME и переопределяется значение HOST_NAME, может быть, необходимо выполнить преобразование типов данных при помощи инструкции CONVERT. Дополнительные сведения см. в подразделе «Переопределение значения HOST_NAME()» раздела Параметризованные фильтры строк.

  3. Укажите, сколько подписок будет получать данные из этой таблицы.

    Только для сервера MicrosoftSQL Server 2005 и более поздних версий. Репликация слиянием позволяет указать тип секций, наилучшим образом подходящих для данных и приложения пользователя. При выборе значения Строка из этой таблицы будет отправлена только одной подписке репликация слиянием устанавливает параметр неперекрывающихся секций. Для повышения производительности неперекрывающиеся секции работают в сочетании с предварительно вычисляемыми секциями; при этом неперекрывающиеся секции предельно снижают стоимость передачи, связанную с предварительно вычисляемыми секциями. Повышение производительности благодаря применению неперекрывающихся секций наиболее заметно при использовании более сложных параметризованных фильтров и фильтров соединения. При выборе этого параметра необходимо убедиться в том, что данные секционированы таким образом, что строка не может реплицироваться на несколько подписчиков. Дополнительные сведения см. в подразделе «Установка параметров секционирования» раздела Параметризованные фильтры строк.

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

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