Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
При создании публикации вы выбираете таблицы и другие объекты базы данных, которые требуется опубликовать. Можно опубликовать следующие объекты базы данных с помощью репликации.
| Объект базы данных | Репликация моментальных снимков и репликация транзакций | Слияние репликаций |
|---|---|---|
| Таблицы | X | X |
| Секционированные таблицы | X | X |
| Хранимые процедуры — определение (Transact-SQL и CLR) | X | X |
| Хранимые процедуры — выполнение (Transact-SQL и CLR) | X | нет |
| Представления | X | X |
| Индексированные представления | X | X |
| Индексированные представления в виде таблиц | X | нет |
| Типы User-Defined (CLR) | X | X |
| Функции User-Defined (Transact-SQL и CLR) | X | X |
| Типы данных псевдонима | X | X |
| Полнотекстовые индексы | X | X |
| Объекты схемы (ограничения, индексы, триггеры DML пользователя, расширенные свойства и параметры сортировки) | X | X |
Создание публикаций
Чтобы создать публикацию, укажите следующие сведения:
Распространитель.
Расположение файлов моментальных снимков.
База данных публикаций
Тип публикации для создания (моментальный снимок, транзакционный, транзакционный с обновляемыми подписками или слиянием).
Объекты данных и базы данных (статьи), которые необходимо включить в публикацию.
Статические фильтры строк и фильтры столбцов для всех типов публикаций, а также параметризованные фильтры строк и фильтры соединения для публикаций слиянием.
Расписание агента моментальных снимков.
Учетные записи, в которых будут выполняться следующие агенты: Агент моментальных снимков для всех публикаций; Агент чтения журналов для всех публикаций транзакций; Агент чтения очередей для публикаций транзакций, которые позволяют обновлять подписки.
Имя и описание публикации.
Сведения о работе с публикациями см. в следующих разделах:
View and Modify Article Properties (Просмотр и изменение свойств статьи)
Delete an Article (Удаление статьи)
Замечание
Удаление статьи или публикации не удаляет объекты из подписчика.
Публикация таблиц
Наиболее часто опубликованный объект — таблица. Следующие ссылки содержат дополнительные сведения о областях, связанных с публикацией таблиц:
При публикации таблицы для репликации можно указать, какие объекты схемы следует скопировать на подписчик, например объявленную ссылочная целостность (ограничения первичного ключа, ограничения ссылок, уникальные ограничения), индексы, триггеры DML пользователя (триггеры DDL нельзя реплицировать), расширенные свойства и параметры сортировки. Расширенные свойства реплицируются только в начальной синхронизации между издателем и подписчиком. При добавлении или изменении расширенного свойства после начальной синхронизации изменение не реплицируется.
Сведения об указании параметров схемы см. в разделе "Указание параметров схемы " или SchemaOption"Параметры схемы".
Секционированные таблицы и индексы
Репликация поддерживает публикацию секционированных таблиц и индексов. Уровень поддержки зависит от типа используемой репликации, а также параметров, указанных для публикации и статей, связанных с секционированных таблицами. Дополнительные сведения см. в разделе "Репликация секционированных таблиц и индексов".
Публикация хранимых процедур
Все типы репликации позволяют реплицировать определения хранимых процедур: create PROCEDURE копируется на каждого подписчика. В случае хранимых процедур общего языка выполнения (CLR), связанная сборка также копируется. Изменения процедур реплицируются подписчикам; изменения связанных сборок не реплицируются.
Помимо репликации определения хранимой процедуры репликация транзакций позволяет реплицировать выполнение хранимых процедур. Это полезно при репликации результатов хранимых процедур, ориентированных на обслуживание, влияющих на большие объемы данных. Дополнительные сведения см. в разделе "Публикация выполнения хранимой процедуры" в репликации транзакций.
Публикация представлений
Все типы репликации позволяют реплицировать представления. Представление (и его сопутствующий индекс, если это индексированное представление) можно скопировать на приемник, но базовая таблица также должна быть реплицирована.
Для индексированных представлений репликация транзакций также позволяет реплицировать индексированные представления как таблицу, а не представление, устраняя необходимость также реплицировать базовую таблицу. Для этого укажите один из параметров журнала индексированного представления для параметра @type sp_addarticle (Transact-SQL). Дополнительные сведения об использовании sp_addarticle см. в разделе "Определение статьи".
Публикация функций User-Defined
Инструкции CREATE FUNCTION для функций CLR и Transact-SQL функции копируются на каждый подписчик. В случае функций CLR связанная сборка также копируется. Изменения функций реплицируются подписчикам; Изменения связанных сборок не являются.
Публикация типов User-Defined и типов данных алиасов
Столбцы, использующие определяемые пользователем типы или псевдонимы типов данных, реплицируются подписчикам так же, как и другие столбцы. Инструкция CREATE TYPEEstatement для каждого реплицированного типа выполняется на подписчике перед созданием таблицы. В случае определяемых пользователем типов связанная сборка также копируется на каждого подписчика. Изменения определяемых пользователем типов и типов данных псевдонимов не реплицируются подписчикам.
Если тип определен в базе данных, но не используется ни в одном из столбцов при создании публикации, тип не копируется подписчикам. При последующем создании столбца этого типа в базе данных и его репликации необходимо сначала вручную скопировать тип (и связанную сборку для определяемого пользователем типа) на каждого подписчика.
Публикация полнотекстовых индексов
Инструкция CREATE FULLTEXT INDEX копируется на каждого подписчика, а полнотекстовый индекс создается на подписчике. Изменения, внесенные в полнотекстовые индексы с помощью ALTER FULLTEXT INDEX, не реплицируются.
Внесение изменений схемы в опубликованные объекты
Репликация поддерживает широкий диапазон изменений схем для опубликованных объектов. При внесении любого из следующих изменений схемы на соответствующий опубликованный объект на издателе SQL Server это изменение распространяется по умолчанию ко всем подписчикам SQL Server:
ИЗМЕНИТЬ ТАБЛИЦУ
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
ALTER TRIGGER
Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.
Рекомендации по публикации
При публикации объектов базы данных следует учитывать следующие проблемы:
База данных доступна пользователям во время создания публикации и начального моментального снимка, но рекомендуется создавать публикации во время более низкого действия на издателе.
После создания публикации в ней невозможно переименовать базу данных. Чтобы переименовать его, необходимо сначала удалить репликацию из базы данных.
Если вы публикуете объект базы данных, который зависит от одного или нескольких объектов базы данных, необходимо опубликовать все объекты, на которые ссылается ссылка. Например, при публикации представления, зависящее от таблицы, необходимо также опубликовать таблицу.
Замечание
При добавлении статьи в публикацию слияния, если существующая статья зависит от новой статьи, необходимо указать порядок обработки обеих статей с помощью параметра @processing_order функций sp_addmergearticle и sp_changemergearticle. Рассмотрим следующий сценарий: вы публикуете таблицу, но не публикуете функцию, на которую ссылается таблица. Если вы не опубликуете функцию, таблица не может быть создана у подписчика. При добавлении функции в публикацию: укажите значение 1 для параметра @processing_order sp_addmergearticle; и укажите значение 2 для параметра @processing_order sp_changemergearticle, указав имя таблицы для параметра @article. Этот порядок обработки гарантирует, что вы создаете функцию у подписчика перед таблицей, которая зависит от нее. Вы можете использовать разные числа для каждой статьи, если число для функции меньше числа для таблицы.
Имена публикаций не могут содержать следующие символы: % * [ ] | : " ? \ / <>.
Ограничения на публикацию объектов
Максимальное количество статей и колонок, которые могут быть опубликованы, отличается в зависимости от типа публикации. Дополнительные сведения см. в разделе "Объекты репликации" в разделе "Спецификации максимальной емкости для SQL Server".
Хранимые процедуры, представления, триггеры и определяемые пользователем функции, определенные как WITH ENCRYPTION, не могут быть опубликованы в рамках репликации SQL Server.
Коллекции схем XML можно реплицировать, но изменения не реплицируются после первоначального моментального снимка.
Таблицы, опубликованные для репликации транзакций, должны иметь первичный ключ. Если таблица находится в публикации репликации транзакций, нельзя отключить индексы, связанные со столбцами первичного ключа. Эти индексы необходимы для репликации. Чтобы отключить индекс, необходимо сначала удалить таблицу из публикации.
Привязанные значения по умолчанию, созданные с помощью sp_bindefault (Transact-SQL) не реплицируются (привязанные значения по умолчанию не рекомендуется использовать в пользу значений по умолчанию, созданных с помощью ключевого слова DEFAULT ALTER TABLE или CREATE TABLE).
Функции,
NOEXPANDсодержащие указание на индексированные представления, нельзя опубликовать в той же публикации, что и ссылки на таблицы и индексированные представления, из-за порядка их доставки агентом распространителя. Чтобы обойти эту проблему, поместите таблицу и индексированные представления в первую публикацию и добавьте функции, содержащиеNOEXPANDуказание на индексированные представления во вторую публикацию, которую вы публикуете после завершения первой публикации. Создайте скрипты для этих функций и передайте сценарий с помощью параметра @post_snapshot_scriptsp_addpublication.
Схемы и владение объектами
Репликация имеет следующее поведение по умолчанию в Мастере создания публикаций в отношении схем и владения объектами:
Для статей в публикациях слияния с уровнем совместимости 90 или выше, в моментальных публикациях и публикациях транзакций: по умолчанию владелец объекта на подписчике тот же, что и владелец соответствующего объекта на издателе. Если схемы, которым принадлежат объекты, не существуют на Подписчике, они создаются автоматически.
Для статей в публикациях объединения с уровнем совместимости ниже 90, по умолчанию владелец остается пустым, а во время создания объекта на подписчике указывается как dbo.
Для статей в публикациях Oracle: по умолчанию владелец указывается как dbo.
Для статей в публикациях, использующих снимки режима символов (которые используются для подписчиков, не относящихся к SQL Server и подписчиков SQL Server Compact): по умолчанию владелец остается пустым. Владелец по умолчанию соответствует владельцу, связанному с учетной записью, используемой агентом распространителя или агентом слияния для подключения к подписчику.
Владельца объекта можно изменить в диалоговом окне «Свойства статьи - <статья> и с помощью следующих хранимых процедур: sp_addarticle, sp_addmergearticle, sp_changearticle и sp_changemergearticle. Дополнительные сведения см. в разделе "Просмотр и изменение свойств публикации", " Определение статьи" и "Просмотр и изменение свойств статьи".
Публикация данных подписчикам, работающим в предыдущих версиях SQL Server
Если вы публикуете для подписчика, использующего предыдущую версию SQL Server, вы ограничены функциональностью этой версии, как с точки зрения специфичных для репликации функций, так и функциональности продукта в целом.
Публикации слияния используют уровень совместимости, который определяет, какие функции можно использовать в публикации, и позволяет обеспечивать совместимость с предыдущими версиями SQL Server у подписчиков.
Публикация таблиц в нескольких публикациях
Репликация поддерживает публикацию статей в нескольких публикациях (включая повторную публикацию данных) со следующими ограничениями:
Если статья публикуется в публикации транзакций и публикации слияния, убедитесь, что свойство @published_in_tran_pub имеет значение TRUE для статьи слияния. Дополнительные сведения о настройке свойств см. в разделе "Просмотр и изменение свойств публикации" и " Просмотр и изменение свойств статьи".
Также следует задать свойство @published_in_tran_pub , если статья является частью транзакционной подписки и включена в публикацию слиянием. Если это так, помните, что по умолчанию транзакционная репликация ожидает, что таблицы у подписчика будут рассматриваться как доступные только для чтения; если репликация слиянием вносит изменения данных в таблицу в транзакционных подписках, может произойти расхождение данных. Чтобы избежать этой возможности, рекомендуется указать любую такую таблицу только для скачивания в публикации слияния. Это предотвращает отправку изменений данных подписчиком слияния в таблицу. Дополнительные сведения см. в статье Оптимизация производительности репликации слиянием при работе со статьями, доступными только для загрузки.
Статью нельзя опубликовать одновременно в публикации объединения и в транзакционной публикации с подписками с обновлением по очереди.
Статьи, включенные в транзакционные публикации, которые поддерживают обновление подписок, невозможно повторно опубликовать.
Если статья публикуется в нескольких публикациях транзакций, поддерживающих подписки на обновление в очереди, то следующие свойства должны иметь одинаковое значение для статьи во всех публикациях:
Недвижимость Параметр в sp_addarticle Управление диапазонами удостоверений @auto_identity_range (не рекомендуется) и @identityrangemangementoption Диапазон идентичности издателя @pub_identity_range Диапазон идентификаторов @identity_range Пороговое значение диапазона идентичности @threshold Дополнительные сведения об этих параметрах см. в разделе sp_addarticle (Transact-SQL).
Если статья публикуется в нескольких публикациях слияния, у неё должны быть одинаковые значения следующих свойств во всех публикациях:
Недвижимость Параметр в sp_addmergearticle Отслеживание столбцов @column_tracking Параметры схемы @schema_option Фильтрация столбцов @vertical_partition Параметры загрузки подписчика @варианты_загрузки_для_подписчиков Отслеживание условного удаления @удалить_отслеживание Компенсация ошибок @compensate_for_errors Управление диапазоном идентичности @auto_identity_range (не рекомендуется) и @identityrangemangementoption Диапазон идентификаций издателя @pub_identity_range Диапазон идентификаторов @identity_range Пороговое значение диапазона удостоверений @threshold Параметры раздела @partition_options Потоковая обработка столбцов BLOB-типа @stream_blob_columns Тип фильтра @filter_type (параметр в sp_addmergefilter) Дополнительные сведения об этих параметрах см. в статьях sp_addmergearticle (Transact-SQL) и sp_addmergefilter (Transact-SQL).
Репликация транзакций и нефильтрованная репликация слиянием поддерживают публикацию таблицы в нескольких публикациях, а затем подписывание в одной таблице в базе данных подписки (обычно называется сценарием свертки). Свертки часто используются для агрегирования подмножества данных из нескольких расположений в одной таблице на центральном подписчике. Публикации, объединенные посредством фильтрации, не поддерживают сценарий центрального подписчика. Для репликации слияния объединение обычно реализуется с помощью одной публикации с параметризованными фильтрами строк. Дополнительные сведения см. в разделе Параметризованные фильтры строк.
См. также
Добавление статей в существующие публикации и удаление статей из существующих публикаций
Настройка распространения
Инициализация подписки
Репликация скриптов
Защита издателя
Подписка на публикации