Создание подписки для подписчика, не являющегося SQL Server

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

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

  • Чтобы создать подписку для подписчика, который не связан с SQL Server, используйте следующее:

    SQL Server Management Studio

    Transact-SQL

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

Чтобы создать подписку для подписчика, не использующего SQL Server, выполните следующее:

  1. Установите и настройте соответствующее клиентское программное обеспечение и поставщиков OLE DB на распределителе SQL Server. Дополнительные сведения см. в разделе "Подписчики Oracle " и "Подписчики IBM DB2".

  2. Создайте публикацию с помощью мастера создания публикаций. Дополнительные сведения о создании публикаций см. в разделе "Создание публикации " и "Создание публикации" из базы данных Oracle. Укажите следующие параметры в мастере создания публикаций:

    • На странице "Тип публикации" выберите публикацию моментальных снимков или публикацию транзакций.

    • На странице агента моментальных снимков снимите флажок "Создать моментальный снимок немедленно".

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

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

  4. Создайте подписку с помощью мастера создания подписки. В этом разделе содержатся дополнительные сведения об этом шаге.

  5. (Необязательно) Измените свойство статьи pre_creation_cmd чтобы сохранить таблицы на Подписчике. В этом разделе содержатся дополнительные сведения об этом шаге.

  6. Создайте моментальный снимок для публикации. В этом разделе содержатся дополнительные сведения об этом шаге.

  7. Синхронизация подписки. Дополнительные сведения см. в разделе "Синхронизация принудительной подписки".

Чтобы включить публикацию для подписчиков, использующих системы, отличные от SQL Server

  1. Подключитесь к издателю в СРЕДЕ SQL Server Management Studio и разверните узел сервера.

  2. Раскройте папку Репликация , а затем папку Локальные публикации .

  3. Щелкните правой кнопкой мыши публикацию и выберите пункт "Свойства".

  4. На странице "Параметры подписки" выберите значение True для параметра "Разрешить подписчиков, отличных от SQL Server". При выборе этого параметра изменяется ряд свойств, чтобы публикация была совместима с подписчиками, отличными от SQL Server.

    Замечание

    Выбор значения True устанавливает свойство статьи pre_creation_cmd в значение 'drop'. Этот параметр указывает, что репликация должна удалять таблицу на подписчике, если её название совпадает с названием таблицы в статье. Если у вас есть таблицы в узле подписчика, которые вы хотите сохранить, используйте для каждой статьи хранимую процедуру sp_changearticle; укажите значение 'none' для pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Нажмите кнопку ОК. Вам будет предложено создать новый моментальный снимок публикации. Если вы не хотите создать его в настоящее время, выполните действия, описанные в следующей процедуре "как" позже.

Чтобы создать подписку для подписчика, не предназначенного для SQL Server

  1. Раскройте папку Репликация , а затем папку Локальные публикации .

  2. Щелкните правой кнопкой мыши соответствующую публикацию и выберите пункт "Создать подписки".

  3. На странице "Местоположение агента распространения" убедитесь, что выбрана опция Запустить всех агентов на распределителе. Подписчики, не использующие SQL Server, не поддерживают запуск агентов на подписчике.

  4. На странице "Подписчики" нажмите кнопку "Добавить подписчика ", а затем нажмите кнопку "Добавить подписчик, отличный от SQL Server".

  5. В диалоговом окне "Добавление подписчика, отличного от SQL Server ", выберите тип подписчика.

  6. Введите значение в имени источника данных:

    • Для Oracle это настраиваемое имя прозрачной сетевой подложки (TNS), которое вы настроили.

    • Для IBM это может быть любое имя. Обычно указывается сетевой адрес подписчика.

    Имя источника данных, введенное на этом шаге, и учетные данные, указанные на шаге 9, не проверяются этим мастером. Они не используются репликацией, пока агент распространителя не будет запущен для подписки. Убедитесь, что все значения были проверены путем подключения к подписчику с помощью клиентского средства (например, sqlplus для Oracle). Дополнительные сведения см. в разделе "Подписчики Oracle " и "Подписчики IBM DB2".

  7. Нажмите кнопку ОК. На странице "Подписчики" мастера подписчик теперь отображается в столбце подписчика только для чтения (назначение по умолчанию) в столбце базы данных подписки :

    • Для Oracle сервер имеет не более одной базы данных, поэтому не нужно указывать базу данных.

    • Для IBM DB2 база данных указана в свойстве начального каталога строки подключения DB2, которая может быть введена в поле "Дополнительные параметры подключения ", описанном далее в этом процессе.

  8. На странице "Безопасность агента распространителя " нажмите кнопку свойств (...) рядом с подписчиком, чтобы открыть диалоговое окно "Безопасность агента распространителя ".

  9. В диалоговом окне "Безопасность агента распространителя ":

    • В поле "Учетная запись процесса", "Пароль" и " Подтверждение пароля " введите учетную запись Microsoft Windows и пароль, под которым агент распространителя должен запускаться и выполнять локальные подключения к распространителю.

      Для учетной записи требуются следующие минимальные разрешения: член предопределенной роли базы данных db_owner в распределительной базе данных; член списка доступа к публикации (PAL); разрешение на чтение в сетевой папке моментальных снимков; и разрешение на чтение каталога установки поставщика OLE DB. Для получения дополнительной информации о PAL см. Защита издателя.

    • В разделе "Подключение к подписчику" в полях "Вход", "Пароль" и " Подтверждение пароля " введите имя входа и пароль, которые следует использовать для подключения к подписчику. Это имя входа уже должно быть настроено и должно иметь достаточные разрешения для создания объектов в базе данных подписки.

    • В поле "Дополнительные параметры подключения " укажите параметры подключения для подписчика в виде строки подключения (Oracle не требует дополнительных параметров). Каждый параметр должен быть разделен точкой с запятой. Ниже приведен пример строки подключения DB2 (разрывы строк предназначены для удобочитаемости):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      Большинство параметров в строке зависят от настраиваемого сервера DB2, но параметр Process Binary as Character всегда должен иметь значение False. Для идентификации базы данных подписки требуется значение для опции Начальный каталог.

  10. На странице "Расписание синхронизации" выберите расписание агента распространителя в меню "Расписание агента " (расписание обычно выполняется непрерывно).

  11. На странице "Инициализация подписок" укажите, следует ли инициализировать подписку и, если да, когда она должна быть инициализирована:

    • Очистить Initialize только если вы создали все объекты и добавили все необходимые данные в базу данных подписки.

    • Выберите «Немедленно» в раскрывающемся списке в столбце Initialize When, чтобы агент распространителя передал файлы моментальных снимков подписчику после завершения работы мастера. Выберите при первой синхронизации, чтобы передача файлов агентом была осуществлена при следующем запуске.

  12. На странице "Действия мастера" при необходимости создайте сценарий подписки. Дополнительные сведения см. в разделе Scripting Replication.

Удерживать таблицы у абонента

  • По умолчанию включение публикации для подписчиков, отличных от SQL Server, задает значение свойства статьи pre_creation_cmd на 'drop'. Этот параметр указывает, что репликация должна удалить таблицу на подписчике, если она имеет такое же имя, как таблица в статье. Если у вас есть таблицы на Подписчике, которые вы хотите сохранить, используйте для каждой статьи хранимую процедуру sp_changearticle; укажите значение "none" для pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Чтобы создать моментальный снимок для публикации

  1. Раскройте папку Репликация , а затем папку Локальные публикации .

  2. Щелкните правой кнопкой мыши публикацию и выберите пункт "Просмотреть состояние агента моментальных снимков".

  3. В диалоговом окне >", нажмите кнопку Пуск.

После завершения создания моментального снимка агент моментальных снимков отображает сообщение, например: "[100%] Был создан моментальный снимок из 17 объектов".

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

Вы можете создавать push-подписки для подписчиков, отличных от SQL Server, программно с помощью хранимых процедур репликации.

Это важно

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

Создание принудительной подписки для публикации транзакций или моментальных снимков на подписчике, отличном от SQL Server

  1. Установите самый новый провайдер OLE DB для подписчика, не SQL Server, на издателе и распространителе. Требования к репликации для поставщика OLE DB см. в разделе подписчиков, не относящихся к SQL Server, подписчикам Oracle, подписчикам IBM DB2.

  2. На сервере публикации в базе данных публикации убедитесь, что публикация поддерживает подписчиков, которые не используют SQL Server, выполнив sp_helppublication (Transact-SQL).

    • Если значение enabled_for_het_sub равно 1, поддерживаются подписчики, не относящиеся к SQL Server.

    • Если значение enabled_for_het_sub равно 0, выполните sp_changepublication (Transact-SQL), указав enabled_for_het_sub для @property и true для @value.

      Замечание

      Перед изменением enabled_for_het_sub на true необходимо отменить все существующие подписки на публикацию. Невозможно задать значение enabled_for_het_subtrue , если публикация также поддерживает обновление подписок. Изменение enabled_for_het_sub повлияет на другие свойства публикации. Для получения дополнительной информации см. раздел подписчики, не использующие SQL Server.

  3. На сервере издателя в базе данных публикации выполните sp_addsubscription (Transact-SQL). Укажите @publication, @subscriber, значение (назначение по умолчанию) для @destination_db, значение push для @subscription_type и значение 3 для @subscriber_type (указывает поставщика OLE DB).

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

    • Параметры @subscriberи @publication .

    • Значение (назначение по умолчанию) для @subscriber_db

    • Свойства источника данных, отличного от SQL Server, для @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string и @subscriber_catalog.

    • Учетные данные Microsoft Windows, под которыми выполняется агент распространения на узле для @job_login и @job_password.

      Замечание

      Подключения, сделанные с помощью встроенной проверки подлинности Windows, всегда используют учетные данные Windows, указанные @job_login и @job_password. Агент распространения всегда устанавливает локальное подключение к дистрибьютору с помощью встроенной проверки подлинности Windows. По умолчанию агент подключается к подписчику с помощью встроенной проверки подлинности Windows.

    • Значение 0 для @subscriber_security_mode и данные входа поставщика OLE DB для @subscriber_login и @subscriber_password.

    • Расписание задания агента распространителя для этой подписки. Дополнительные сведения см. в разделе "Указание расписаний синхронизации".

    Это важно

    При создании push-подписки у издателя с удаленным распространителем значения, переданные для всех параметров, включая job_login и job_password, отправляются распространителю в открытом виде текста. Перед выполнением этой хранимой процедуры необходимо зашифровать подключение между издателем и его удаленным распространителем. Дополнительные сведения см. в статье Включение шифрования соединений в компоненте Database Engine (диспетчер конфигурации SQL Server).

См. также

Подписчики IBM DB2
Подписчики Oracle
Другие подписчики, отличные от SQL Server
Основные понятия хранимых процедур системы репликации
Рекомендации по обеспечению безопасности репликации