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


Использование нескольких версий 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, необходимо проверить, чтобы типы данных были сопоставлены соответствующим образом.

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

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. Уровень совместимости указывается одним из следующих способов.

Для следующих возможностей необходим уровень совместимости 90RTM и выше.

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

Поведение уровня совместимости публикации в 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  Эта конфигурация не поддерживается, поскольку версия издателя должна быть не меньше версии подписчика.