Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
В этом разделе описывается, как создать подписку для подписчика, отличного от SQL Server, в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Репликация транзакций и моментальных снимков поддерживает публикацию данных для подписчиков, отличных от SQL Server. Сведения о поддерживаемых платформах подписчиков см. в разделе Non-SQL Server Subscribers.
Использование среды SQL Server Management Studio
Чтобы создать подписку для подписчика, не являющегося SQL Server, выполните следующие действия:
Установите и настройте соответствующее клиентское программное обеспечение и поставщик(и) OLE DB на распространителе SQL Server. Дополнительные сведения см. в разделе "Подписчики Oracle" и "Подписчики IBM Db2".
Создайте публикацию с помощью мастера создания публикаций. Дополнительные сведения о создании публикаций см. в статьях Создание публикации и Создание публикации из базы данных Oracle. Укажите в мастере создания публикаций следующие параметры:
На странице Тип публикации выберите Публикация моментальных снимков или Публикация транзакций.
На странице Агент моментальных снимков снимите флажок Создать моментальный снимок немедленно.
Создайте моментальный снимок после включения публикации для подписчиков, отличных от SQL Server, чтобы убедиться, что агент моментальных снимков создает скрипты моментального снимка и инициализации, подходящие для подписчиков, отличных от SQL Server.
Включите публикацию для подписчиков, отличных от SQL Server, с помощью диалогового окна "Свойства публикации — <имя> публикации". Дополнительные сведения об этом шаге см. в разделе Publication Properties, Subscription Options .
Создайте подписку с помощью мастера создания подписок. В этом разделе содержатся дополнительные сведения об этом шаге.
(Необязательно) Измените свойство статьи pre_creation_cmd, чтобы сохранить таблицы у подписчика. В этом разделе содержатся дополнительные сведения об этом шаге.
Создайте моментальный снимок для публикации. В этом разделе содержатся дополнительные сведения об этом шаге.
Синхронизация подписки. Дополнительные сведения см. в статье Синхронизация push-подписки.
Включить публикацию для подписчиков, не использующих SQL Server
В SQL Server Management Studio подключитесь к Издателю, а затем разверните узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию, а затем щелкните Свойства.
На странице Параметры подписки выберите значение 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'.Нажмите ОК. Вам будет предложено создать новый снимок для публикации. Если вы не хотите создавать его сейчас, позже воспользуйтесь шагами, описанными в следующей процедуре с инструкциями.
Создание подписки для подписчика, отличного от подписчика SQL Server
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши соответствующую публикацию, а затем щелкните Создать подписку.
На странице Расположение агента распространения убедитесь, что установлен флажок Запускать все агенты на распространителе. Подписчики, не использующие SQL Server, не поддерживают запуск агентов на подписчике.
На странице Подписчики щелкните Добавить подписчик , а затем — Добавить подписчик, отличный от подписчика SQL Server.
В диалоговом окне Добавление подписчика, отличного от подписчика SQL Server выберите тип подписчика.
Введите значение в поле Имя источника данных:
Для Oracle это имя TNS (Transparent Network Substrate), которое вы настроили.
Для IBM это может быть любое имя. Обычно указывается сетевой адрес подписчика.
На этом этапе вводится имя источника данных, и учетные данные, указанные на шаге 9, этим мастером не проверяются. Они не используются в процессе репликации, пока для этой подписки не будет запущен агент распространения. Убедитесь, что все значения были проверены путем подключения к Подписчику с помощью клиентского инструмента (например, sqlplus для Oracle). Дополнительные сведения см. в разделе "Подписчики Oracle" и "Подписчики IBM Db2".
Нажмите ОК. Теперь на странице Подписчики мастера данный подписчик будет отображен в столбце Подписчик с доступным только для чтения значением (назначение по умолчанию) в столбце База данных подписки :
Для СУБД Oracle сервер имеет не более одной базы данных, поэтому нет необходимости указывать базу данных.
Для IBM Db2 база данных указывается в свойстве Initial Catalog строки подключения DB2, которое можно ввести в поле Дополнительные параметры подключения, которое описано далее в этом процессе.
На странице "Безопасность агента распространителя " нажмите кнопку свойств (...) рядом с подписчиком, чтобы открыть диалоговое окно "Безопасность агента распространителя ".
В диалоговом окне Безопасность агента распространителя выполните следующие действия:
В поле "Учетная запись процесса", "Пароль" и "Подтверждение пароля" введите учетную запись и пароль 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, но параметр Обрабатывать двоичное значение как символ всегда должен иметь значение False. Параметр Исходный каталог должен иметь значение для идентификации базы данных подписки.
На странице Расписание синхронизации выберите из меню Расписание агента расписание для агента распространителя (обычно используется расписание Выполнять постоянно).
На странице Инициализация подписок укажите, следует ли инициализировать подписку и, если да, когда ее необходимо инициализировать:
Снимите флажок Инициализировать , только если были созданы все объекты и были добавлены все необходимые данные в базу данных подписки.
Выберите «Немедленно» в раскрывающемся списке в столбце «Время инициализации», чтобы после завершения работы этого мастера агент распространения передал файлы моментального снимка подписчику. Выберите пункт При первой синхронизации , чтобы агент переслал файлы при следующем запланированном запуске.
На странице Действия мастера при желании можно написать скрипт для подписки. Дополнительные сведения см. в разделе 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'.
Создать снимок для публикации
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию, а затем щелкните Просмотреть состояние агента моментальных снимков.
В диалоговом окне «Просмотр состояния агента моментальных снимков — <Публикация>» нажмите кнопку Запустить.
Когда агент Snapshot завершит создание снимка, отобразится сообщение, например: «[100%] Был создан снимок для 17 статей.»
Использование Transact-SQL
Вы можете программным способом создавать подписки типа push для подписчиков, не использующих SQL Server, с помощью хранимых процедур репликации.
Внимание
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
Создание подписки типа push для публикации транзакций или публикации моментальных снимков для подписчика, отличного от SQL Server
Установите самую актуальную версию поставщика OLE DB для подписчика, не являющегося SQL Server, как на Издателе, так и на Распространителе. Сведения о требованиях к репликации для поставщика OLE DB см. в разделах Подписчики, отличные от SQL Server, Подписчики Oracle, Подписчики IBM Db2.
На сервере-издателе в базе данных публикации убедитесь, что публикация поддерживает подписчиков, не являющихся 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.
На сервере-издателе в базе данных публикации выполните sp_addsubscription (Transact-SQL). Задайте
@publication,@subscriber, значение(default destination)для@destination_db, значение push для@subscription_typeи значение 3 для@subscriber_type(задает поставщик OLE DB).На издателе в базе данных публикаций выполните 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.
Внимание
При создании подписки типа push у издателя с удалённым дистрибьютором значения, указываемые для всех параметров, включая job_login и job_password, передаются дистрибьютору в открытом виде. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в статье Включение шифрования соединений в компоненте ядро СУБД (диспетчер конфигурации SQL Server).