Использование нескольких версий SQL Server в топологии репликации
Поддерживается репликация данных в различные версии SQL Server. Содержание данного раздела:
поддерживаемые версии SQL Server;
сопоставление типов данных SQL Server 2008 для предыдущих версий;
восстановление реплицированной базы данных из предыдущей версии;
уровень совместимости для публикаций слиянием.
Сведения о репликации данных в выпусках SQL Server Express и SQL Server Compact 3.5 с пакетом обновления 1 (SP1) см. в разделах Репликация данных в SQL Server Express и Репликация данных в выпуске SQL Server Compact. Сведения о поддерживаемых каждым выпуском SQL Server функциях см. в разделе Возможности, поддерживаемые различными выпусками SQL Server 2008.
Поддерживаемые версии SQL Server
SQL Server 2000 и SQL Server 2005 могут участвовать в топологиях репликации вместе с SQL Server 2008. Минимальная версия SQL Server 2000 — с пакетом обновления 3 (SP3). Минимальная версия SQL Server 2005 — с пакетом обновления 2 (SP2).
При репликации между различными версиями SQL Server функциональные возможности чаще всего ограничиваются возможностями более ранней из используемых версий. Например, если распространитель обновляется до экземпляра SQL Server 2008, но при этом на издателе запущен экземпляр SQL Server 2005, а на подписчике — экземпляр SQL Server 2000, то пользователь будет ограничен общими функциональными возможностями и возможностями репликации, доступными в SQL Server 2000.
![]() |
---|
Формат хранения данных SQL Server на диске одинаков в 64-разрядной и 32-разрядной среде, поэтому в топологию репликации можно объединить экземпляры серверов, работающие в 32-разрядной и 64-разрядной средах. |
Для всех типов репликации номер версии распространителя должен быть не ниже номера версии издателя (часто экземпляр распространителя выступает также в роли издателя).
Подписчик на репликацию транзакций может иметь любую версию, отличную от версии издателя не более чем на две версии. Например, издатель SQL Server 2000 может иметь подписчиков SQL Server 2008, а издатель SQL Server 2008 — подписчиков SQL Server 2000.
Подписчик на репликацию слиянием может иметь любую версию, но не более позднюю, чем версия издателя. Дополнительные сведения о совместимости предыдущих версий см. в подразделе «Уровень совместимости для публикаций слиянием» ниже в данном разделе. Дополнительные сведения о функциях репликации, поддерживаемых в различных выпусках SQL Server, см. в разделе Возможности, поддерживаемые различными выпусками SQL Server 2008.
Использование распространителя SQL Server 2005 или SQL Server 2008 с издателем, работающим с SQL Server 2000
SQL Server 2005 и SQL Server 2008 можно использовать в качестве удаленного распространителя для издателей, запущенных на SQL Server 2000. Чтобы изменить свойства агента в этом сценарии, выполните следующие хранимые процедуры на распространителе. Эти процедуры позволяют изменить свойства, представленные в SQL Server 2005:
Если на издателе и на распространителе запущен SQL Server 2000, то с помощью процедур sp_changedistpublisher и sp_changesubscriber можно изменить учетные данные, под которыми агенты устанавливают соединения. Однако, если обновить распространитель до SQL Server 2008, использовать эти процедуры для изменения учетных данных для существующих заданий агентов станет невозможно. Процедуры влияют на задания агентов, созданные после вызова процедуры. Чтобы изменить учетные данные для существующих заданий агентов, вызовите одну из четырех приведенных выше процедур.
Сопоставление новых типов данных для ранних версий
SQL Server 2008 и SQL Server 2005 поддерживают несколько новых типов данных. Как показано в следующей таблице, эти новые типы данных сопоставляются с совместимыми типами данных подписчика при использовании принудительных подписок от распространителя SQL Server 2005 или SQL Server 2008. Если новые типы данных реплицируются на подписчики, работающие с более ранними версиями SQL Server, необходимо проверить, чтобы типы данных были сопоставлены соответствующим образом.
Сопоставление выполняется по умолчанию для статей в публикациях слиянием, но не для статей в моментальном снимке или публикациях транзакций. Для публикаций слиянием способ сопоставления типов определяется уровнем совместимости публикаций. Например, если имеется столбец типа geography при уровне совместимости 90RTM, тип сопоставлен с типом varbinary(max). Если уровень совместимости равен 80RTM, тип сопоставлен с типом image.
Процесс сопоставления управляется параметром @schema\_option процедур sp_addarticle и sp_addmergearticle.
Дополнительные сведения о задании параметров схемы см. в разделах Как указать параметры схемы (среда SQL Server Management Studio) и Как задать параметры схемы (программирование репликации на языке Transact-SQL).
Тип данных SQL Server 2008 |
Тип данных SQL Server 2005 |
Тип данных SQL Server 2000 |
---|---|---|
Определяемый пользователем тип данных среды CLR: не более 8000 байт |
определяемый пользователем тип |
image |
Определяемый пользователем тип: более 8000 байт1 |
varbinary(max) |
image |
date2, 3 |
nvarchar(10) |
nvarchar(10) |
datetime22, 3 |
nvarchar(27) |
nvarchar(27) |
datetimeoffset2, 3 |
nvarchar(34) |
nvarchar(34) |
Атрибут FILESTREAM1, 4 |
varbinary(max) |
Не поддерживается |
geography и geometry1, 3 |
varbinary(max) |
image |
hierarchyid1, 5 |
varbinary(max) |
image |
nvarchar(max) |
nvarchar(max) |
ntext |
time2, 3 |
nvarchar(16) |
nvarchar(16) |
varchar(max) |
varchar(max) |
text |
varbinary(max) |
varbinary(max) |
image |
xml |
xml |
ntext |
1 Сопоставления для типов UDT, FILESTREAM, geography, geometry и hierarchyid не поддерживаются для публикаций транзакций с обновляемыми подписками. Эти типы нужно включать, только если все обновляемые подписчики работают с SQL Server 2008 или более поздними версиями.
2 Репликация не проверяет формат данных, добавленных на стороне подписчика. Следовательно, приложение должно обеспечить правильный формат добавляемых данных для столбцов типа date, datetime2, datetimeoffset и time. Обычно это выполняется с помощью ограничения. Если данные в неправильном формате, добавление на стороне издателя завершится с ошибкой.
3SQL Server Compact 3.5 Подписчики преобразуют эти типы после их репликации. Дополнительные сведения о сопоставлении типов данных для SQL Server Compact 3.5 см. в документации SQL Server Compact 3.5.
При сопоставлении столбцов типа geography или geometry с varbinary(max) или image нельзя произвести для них репликацию ограничений по умолчанию, что влечет за собой следующие следствия.
Если на издателе уже есть ограничение по умолчанию, удалите его или укажите, что оно не должно реплицироваться. Чтобы указать, что ограничение не должно реплицироваться, используйте параметр схемы статьи для ограничений по умолчанию.
Для параметра Копировать спецификации значений по умолчанию установите значение False. Дополнительные сведения см. в разделе Как указать параметры схемы (среда SQL Server Management Studio).
Отключите параметр схемы 0x800. Дополнительные сведения см. в разделе Как задать параметры схемы (программирование репликации на языке Transact-SQL).
Если требуется добавить на издатель ограничение по умолчанию, сначала следует указать, какие изменения схемы не должны реплицироваться. Дополнительные сведения см. в разделах Как реплицировать изменения схемы (среда SQL Server Management Studio) и Как выполнить репликацию изменений схемы (программирование репликации на языке Transact-SQL).
4 FILESTREAM — атрибут столбца типа varbinary(max). Дополнительные сведения об использовании столбцов FILESTREAM в реплицируемых таблицах, см. раздел «Репликация» Использование FILESTREAM с другими компонентами SQL Server. Столбцы с атрибутом FILESTREAM не должны включаться в публикации, использующие моментальный снимок в символьном формате.
5 Поддержка столбцов типа hierarchyid зависит от типа репликации и используемых версий SQL Server. Дополнительные сведения см. в разделе «Использование столбцов типа данных hierarchyid в реплицированных таблицах» hierarchyid (Transact-SQL). Для репликации слиянием тип hierarchyid сопоставляется с типом image при уровне совместимости публикаций равном 100RTM и использовании моментального снимка в символьном формате.
Репликация XML-данных
При репликации XML-данных в SQL Server Compact 3.5 с пакетом обновления 1 (SP1) репликация слиянием сопоставляет их со столбцом Ntext. Байты префикса XML-данных в SQL Server 2008 имеют кодировку UTF-16. Эти байты сохраняются при репликации слиянием из SQL Server в SQL Server Compact 3.5 с пакетом обновления 1 (SP1). Байты префикса не распознаются средой SQL Server Management Studio при просмотре столбца Ntext базы данных SQL Server Compact 3.5 с пакетом обновления 1 (SP1). Поэтому они отображаются как «мусорные» символы.
В SQL Server 2008 обновлена коллекция XML-схем. Она влияет на репликацию XML-столбцов, привязанных к XML-схемам из SQL Server 2008 в SQL Server 2005.
Часовые пояса необязательны для значений даты, времени и даты-времени в XML-схеме SQL Server 2008. Это означает, что если часовой пояс задан в XML-столбце издателя SQL Server 2008, изменения не будут применяться на подписчиках SQL Server 2005, поскольку SQL Server 2005 требует указания часового пояса.
Сведения часовых поясов о типизированных значениях даты, времени и даты-времени в XML-схемах издателя SQL Server 2008 в SQL Server 2005 будут преобразованы в формат UTC-0. Он представлен признаком «П» часового пояса.
Типы даты, времени и даты-времени XML-схем SQL Server 2008 поддерживают большую точность. Поэтому при репликации в SQL Server 2005 эти значения округляются.
При репликации значений даты и времени XML-схем из SQL Server 2005 в SQL Server 2008 значения с отрицательным годом не будут применяться, поскольку не поддерживаются в SQL Server 2008.
В таких ситуациях методы sp_table_validation и Validate в агенте репликации могут завершиться ошибкой. Дополнительные сведения см. в разделе «Обновление типизированного XML из SQL Server 2005 в SQL Server 2008» в Сравнение типизированного и нетипизированного XML.
Публикация сжатых данных
SQL Server 2008 поддерживает сжатие строк и страниц для таблиц и индексов. Сведения о поддержке репликации сжатых данных см. в подразделе «Как сжатие влияет на репликацию» в разделе Создание сжатых таблиц и индексов.
Восстановление реплицированной базы данных из предыдущей версии
При восстановлении резервной копии реплицируемой базы данных из предыдущей версии можно сохранить настройки репликации. При восстановлении из резервных копий сервера и базы данных с теми же именами, что и у сервера или базы данных, для которых была сделана резервная копия, или при указании параметра KEEP_REPLICATION параметры репликации сохраняются. Дополнительные сведения см. в разделе RESTORE (Transact-SQL). После восстановления базы данных из копии выполните хранимую процедуру sp_vupgrade_replication, чтобы обновить схему и системные данные для поддержки репликации на текущем уровне продукта.
Хотя сохранение репликации после восстановления из резервной копии предыдущей версии возможно, его редко используют в качестве способа обновления. Чаще используется обновление реплицируемой базы данных в рамках обновления продукта или повторного создания базы данных и конфигурации репликации из набора сценариев.
Уровень совместимости для публикаций слиянием
Репликация слиянием использует уровень совместимости публикаций, чтобы определить, какие возможности могут быть использованы публикациями в указанной базе данных. Диапазон значений: от 80RTM (SQL Server 2000 без установленных пакетов обновления) до 100RTM для SQL Server 2008. Уровень совместимости указывается одним из следующих способов.
С помощью параметра @publication\_compatibility\_level процедуры sp_addmergepublication. Дополнительные сведения см. в разделе Как настроить уровень совместимости для публикаций слиянием (программирование репликации на языке Transact-SQL).
На странице Типы подписчиков мастера создания публикаций. Дополнительные сведения об использовании этого мастера см. в разделе Как создать публикацию и определить статьи (среда SQL Server Management Studio).
На странице Общие диалогового окна Свойства публикации — <публикация>. Дополнительные сведения см. в разделе Как настроить уровень совместимости для публикации слиянием (среда SQL Server Management Studio).
Для следующих возможностей необходим уровень совместимости 90RTM и выше.
Логические записи. Дополнительные сведения см. в разделе Изменения группирования связанных строк с логическими записями.
Параметры передачи подписчика. Дополнительные сведения см. в разделе Оптимизация производительности репликации слиянием при работе со статьями, доступными только для загрузки.
Неперекрывающиеся секции. Дополнительные сведения см. в разделе Параметризованные фильтры строк.
Обработчики бизнес-логики. Дополнительные сведения см. в разделе Выполнение бизнес-логики при синхронизации слиянием.
Изменения схемы, использующие инструкции ALTER <OBJECT>. Дополнительные сведения см. в разделе Внесение изменений схем в базы данных публикаций.
Следующие функции не зависят от уровня совместимости, однако для них необходим агент слияния, который входит в состав SQL Server 2005 и более поздних версий. Подписчики, работающие с более ранними версиями SQL Server, работают так, как будто функция не включена.
Предварительно вычисляемые секции. Дополнительные сведения см. в разделе Оптимизация производительности параметризованного фильтра с помощью предварительно вычисляемых секций.
Веб-синхронизация. Дополнительные сведения см. в разделе Веб-синхронизация для репликации слиянием.
Агенты параллельных фаз (указывающие параметр -ParallelUploadDownload для агента слияния). Дополнительные сведения см. в разделе Агент слияния репликации.
Функции моментальных снимков для использующих параметризированные фильтры публикаций. Эти функции предоставляют следующие возможности:
для подписчика — запросить моментальный снимок, если он недоступен для секции подписчика;
для администратора — выполнить предварительное формирование моментальных снимков и запланировать их формирование;
передавать параметризованные моментальные снимки по протоколу FTP.
Дополнительные сведения см. в разделах Моментальные снимки для публикаций слиянием с параметризованными фильтрами и Передача моментальных снимков по протоколу FTP.
Улучшенные средства ведения журналов и статистика по статьям в мониторе репликации. Дополнительные сведения см. в разделе Как просмотреть сведения и выполнить задачи для подписки (монитор репликации).
Поведение уровня совместимости публикации в SQL Server 2008
Далее приведены некоторые важные особенности уровня совместимости публикации, которые необходимо учесть.
Уровень совместимости публикации не связан с уровнем совместимости базы данных.
Если публикация создается с помощью процедуры sp_addmergepublication или объектов RMO, по умолчанию уровень совместимости публикации устанавливается в значение 80RTM. Если публикация создается мастером создания публикаций, уровень совместимости публикации определяется на основании параметров, выбранных на странице мастера Типы подписчиков.
В версиях SQL Server, более ранних чем SQL Server 2005, уровень совместимости публикаций автоматически увеличивался, если включались функции, требующие более высокого уровня. В SQL Server 2005 необходимо вручную установить уровень совместимости публикаций в значение 90RTM или больше перед включением функции, для которой необходим этот уровень совместимости.
Уровень совместимости публикации может быть уменьшен только в том случае, если агент моментальных снимков не был запущен и нет подписок на публикацию.
Все публикации в одной базе данных должны иметь одинаковый уровень совместимости. Из этого вытекает следующее.
Если база данных содержит публикацию с меньшим уровнем совместимости (например 80RTM), а в ту же базу данных необходимо добавить другую публикацию с уровнем совместимости 90RTM или больше, то перед добавлением новой публикации необходимо вручную увеличить уровень совместимости первой публикации.
Если база данных содержит две или более публикации с более низкими уровнями совместимости и нужно добавить еще одну публикацию в ту же базу данных с уровнем 90RTM или больше, необходимо: удалить все публикации кроме одной, увеличить уровень оставшейся публикации до 90RTM или больше, повторно создать удаленные публикации с уровнем 90RTM или больше и создать новую публикацию с уровнем 90RTM или больше.
Необходимые компоненты и уровни совместимости для веб-синхронизации
SQL Server 2008 поддерживает веб-синхронизацию для подписчиков, работающих с SQL Server 2005, SQL Server 2008 и SQL Server Compact 3.5 версий 3.0, 3.1 и 3.5. В следующей таблице представлены уровни совместимости публикаций и компоненты сервера, необходимые для каждого типа подписчика.
Версия издателя |
Версия подписчика |
Необходимый уровень совместимости публикации |
Необходимые компоненты на сервере IIS |
---|---|---|---|
SQL Server 2008 |
SQL Server 2008 |
100RTM |
Компоненты служб IIS в SQL Server 2008 |
SQL Server 2008 |
SQL Server Compact 3.5 версий 3.0, 3.1 и 3.5 |
90RTM |
Компоненты IIS SQL Server Compact 3.5 с пакетом обновления 1 (SP1) и SQL Server 2008 |
SQL Server 2008 |
SQL Server 2005 |
90RTM |
Компоненты служб IIS в SQL Server 2008 |
SQL Server 2005 |
SQL Server 2005 |
90RTM |
Компоненты служб IIS в SQL Server 2005 |
SQL Server 2005 |
SQL Server Compact 3.5 версий 3.0, 3.1 и 3.5 |
90RTM |
Компоненты IIS SQL Server Compact 3.5 с пакетом обновления 1 (SP1) и SQL Server 2005 |
SQL Server 2005 |
SQL Server 2008 |
Неприменимо1 |
Неприменимо1. |
1 Эта конфигурация не поддерживается, поскольку версия издателя должна быть не меньше версии подписчика.
См. также