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


Добавление или редактирование фильтров

Диалоговые окна Добавить фильтр и Редактирование фильтра позволяют добавлять и изменять статические и параметризованные фильтры строк.

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

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

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

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

Параметры

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

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

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

    1. Нажмите кнопку Отмена в диалоговом окне Добавить фильтр.

    2. В области фильтров страницы Фильтрация строк таблицы выберите таблицу и щелкните Правка.

    3. В диалоговом окне Редактирование фильтра отредактируйте существующий фильтр.

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

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

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

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

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

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

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

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

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