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


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

В данном разделе описывается процесс создания подписки в SQL Server 2012 для подписчика, отличного от подписчика SQL Server, с помощью среды Среда 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. Установите и настройте на распространителе SQL Server соответствующее клиентское программное обеспечение и соответствующий поставщик OLE DB. Дополнительные сведения см. в разделах Подписчики 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, указав в качестве параметра pre_creation_cmd указав значение «none»: 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. На странице Действия мастера при желании можно написать скрипт для подписки. Дополнительные сведения см. в разделе Создание сценариев репликации.

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

  • По умолчанию при разрешении публикации для подписчиков, не являющихся подписчиками 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 статей».

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

Можно программно создавать принудительные подписки для подписчиков, отличных от 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), при этом в качестве значения параметра @property укажите enabled_for_het_sub, а в качестве значения @value — true.

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

      Перед изменением значения enabled_for_het_sub на true необходимо удалить все существующие подписки на публикацию. Нельзя присвоить параметру enabled_for_het_sub значение true, если публикация также поддерживает обновляемые подписки. Изменение параметра 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;

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

    Примечание по безопасностиПримечание по безопасности

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Основные понятия

Подписчики IBM DB2

Подписчики Oracle

Другие подписчики, отличные от SQL Server

Основные понятия системных хранимых процедур репликации

Рекомендации по защите репликации