Как определить и изменить параметризованный фильтр строк для статьи слияния (среда SQL Server Management Studio)
Определение, изменение и удаление параметризованных фильтров строк выполняется на странице Фильтрация строк таблицы мастера создания публикаций или на странице Фильтрация строк диалогового окна Свойства публикации — <публикация>. Дополнительные сведения об использовании этого мастера и о доступе к этому диалоговому окну см. в разделах Как создать публикацию и определить статьи (среда SQL Server Management Studio) и Как просмотреть и изменить свойства публикации и статьи (среда SQL Server Management Studio).
Примечание |
---|
При добавлении, изменении или удалении параметризованного фильтра строк в диалоговом окне Свойства публикации — <публикация> после инициализации подписок на публикацию необходимо сформировать новый моментальный снимок и повторно инициализировать все подписки после внесения изменения. Дополнительные сведения о требованиях к изменениям свойств см. в разделе Изменение свойств публикации и статей. |
Определение параметризованного фильтра строк
На странице Фильтрация строк таблицы мастера создания публикаций или на странице Фильтрация строк диалогового окна Свойства публикации — <публикация> нажмите кнопку Добавить, а затем щелкните Добавить фильтр.
В окне Добавление фильтра выберите в раскрывающемся списке таблицу для фильтрации.
Создайте инструкцию фильтра в текстовом поле Инструкция фильтра. Можно ввести текст в тестовом поле или перетащить столбцы из списка Столбцы.
Текстовая область Инструкция фильтра содержит текст по умолчанию, в виде:
SELECT <published_columns> FROM [tableowner].[tablename] WHERE
Текст по умолчанию изменять нельзя. Введите предложение фильтра после ключевого слова WHERE, используя стандартный синтаксис SQL. Параметризованный фильтр включает вызов функции системы HOST_NAME() и/или SUSER_SNAME() либо пользовательской функции, которая ссылается на одну или обе эти функции. Ниже приведен пример полного выражения для параметризованного фильтра строк:
SELECT <published_columns> FROM [HumanResources].[Employee] WHERE LoginID = SUSER_SNAME()
В предложении WHERE необходимо использовать имена, состоящие из двух частей; имена, состоящие из трех или четырех частей, не поддерживаются.
Важно! Для сохранения высокой производительности не рекомендуется применять функции к именам столбцов в предложениях параметризованных фильтров строк, таких как LEFT([MyColumn]) = SUSER_SNAME(). Если в предложении фильтра используется HOST_NAME и переопределяется значение HOST_NAME, может оказаться необходимым преобразовать типы данных с помощью инструкции CONVERT. Дополнительные сведения см. в подразделе «Переопределение значения HOST_NAME()» раздела Параметризованные фильтры строк.
Выберите параметр, который соответствует способу совместного использования данных подписчиками:
Строка из этой таблицы будет отправлена нескольким подпискам
Строка из этой таблицы будет отправлена только одной подписке
Если выбрана настройка Строка из этой таблицы будет отправлена только одной подписке, производительность репликации слиянием будет оптимизирована путем уменьшения объема хранимых и обрабатываемых метаданных. Однако следует убедиться, что данные секционированы таким образом, что одна строка не может быть реплицирована более чем одному подписчику. Дополнительные сведения см. в подразделе «Настройка параметров секционирования» раздела Параметризованные фильтры строк.
Нажмите кнопку ОК.
В диалоговом окне Свойства публикации — <публикация> нажмите кнопку ОК, чтобы сохранить результаты и закрыть диалоговое окно.
Изменение параметризованного фильтра строк
На странице Фильтрация строк таблицы мастера создания публикаций или на странице Фильтрация строк диалогового окна Свойства публикации — <публикация> выберите фильтр в области Отфильтрованные таблицы и нажмите кнопку Правка.
В окне Изменение фильтра измените фильтр.
Нажмите кнопку ОК.
Удаление параметризованного фильтра строк
- На странице Фильтрация строк таблицы мастера создания публикаций или на странице Фильтрация строк диалогового окна Свойства публикации — <публикация> выберите фильтр в области Отфильтрованные таблицы и щелкните Удалить.