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

Область применения: SQL Server

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

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

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

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

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

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

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

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

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

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

  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-имя (transparent network substrate).

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

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

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

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

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

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

  9. В диалоговом окне Безопасность агента распространителя выполните следующие действия:

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

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

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

    • В поле Дополнительные параметры соединения укажите любые параметры соединения для подписчика в форме строки соединения (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, но параметр Обрабатывать двоичное значение как символ всегда должен иметь значение False. Параметр Исходный каталог должен иметь значение для идентификации базы данных подписки.

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

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

    • Снимите флажок Инициализировать , только если были созданы все объекты и были добавлены все необходимые данные в базу данных подписки.

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

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

Сохранение таблиц на подписчике

  • По умолчанию включение публикации для подписчиков, отличных от SQL Server, задает значение свойства статьи pre_creation_cmd значение drop. Этот параметр говорит о том, что репликация должна удалить таблицу на подписчике, если ее имя совпадает с именем таблицы в статье. Если на подписчике уже существуют таблицы, которые необходимо сохранить, то для каждой статьи вызовите хранимую процедуру sp_changearticle , указав в качестве параметра pre_creation_cmdзначение «none». 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_sub значение true , если публикация также поддерживает обновляемые подписки. Изменение параметра enabled_for_het_sub отразится на других свойствах публикации. Дополнительные сведения см. в статье Non-SQL Server Subscribers.

  3. На издателе в базе данных публикации выполните sp_addsubscription (Transact-SQL). Задайте @publication, @subscriber, значение (default destination) для @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.

    • Расписание задания агента распространителя для этой подписки. Дополнительные сведения см. в статье Specify Synchronization Schedules.

    Внимание

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