Ограничения репликации

Если репликация слиянием используется совместно с подписчиками Microsoft SQL Server Compact 3.5, то к публикации применяется несколько ограничений. описанных в данном разделе.

Ограниченные возможности изменения схемы на подписчике

Хотя на подписчике можно вносить определенные изменения в схему, однако возможности по внесению изменений ограничены. В следующей таблице описываются изменения схемы, которые можно и которые нельзя выполнять на подписчике.

Действие

Разрешено для реплицированной таблицы

Удаление таблицы

Нет

Переименование таблицы

Нет

Добавление и удаление столбца

Нет

Изменение начального значения или приращения столбца идентификаторов

Да

Добавление или удаление умолчаний

Да

Добавление или удаление первичного ключа

Нет

Добавление или удаление внешнего ключа

Нет

Добавление или удаление индекса

Примечание

Не рекомендуется удалять и добавлять индексы для столбцов репликации в пользовательских таблицах. Поскольку подобные столбцы рассматриваются как системные столбцы, это приведет к сбою при синхронизации.

Да

Переименование индекса

Да

Важно!

Изменения схемы нельзя выполнять для системных таблиц.

Дополнительные требования

К подписчикам SQL Server Compact 3.5 применяются следующие правила.

  • Использование памяти

    После того как была запрошена повторная инициализация, размер базы данных SQL Server Compact 3.5 в процессе синхронизации может временно увеличиться в два раза по сравнению с фактическим размером. Однако после завершения синхронизации будет выполнено сжатие (в зависимости от политики автоматического сжатия).

  • Сверка фильтра подписки

    Сверка фильтра позволяет издателю проверить значение фильтра подписчика перед синхронизацией данных. Если на подписчике значение фильтра было изменено, издатель требует, чтобы была выполнена повторная инициализация подписчика. SQL Server Compact 3.5 может использовать проверку фильтра при синхронизации данных с SQL Server 2008 R2.

    Примечание

    Свойство HostName содержит значение динамического фильтра для подписки. Чтобы изменить значение динамического фильтра для подписчика путем указания нового свойства HostName, необходимо перед синхронизацией вызвать метод Reinitialize .

  • Учет регистра букв

    Начиная с версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1), SQL Server Compact поддерживает параметры сортировки с учетом регистра на уровне базы данных. Однако такие имена объектов, как имена таблиц, функций, представлений, ключевые слова языка, не обрабатываются в базе данных SQL Server Compact с учетом регистра, даже если параметры сортировки учитывают регистр клавиатуры.

    Другими словами, объекты и данные в базах данных SQL Server Compact и базах данных SQL Server обрабатываются по-разному. Например, в базе данных SQL Server таблицы с именами MYTABLE и mytable будут считаться разными таблицами. А в базе данных SQL Server Compact такие таблицы вызовут конфликт имен. С другой стороны, значения MYVALUE и myvalue в базе данных больше не приведут к нарушению первичного ключа в SQL Server Compact, поскольку они будут рассматриваться как разные значения. Точно так же нарушения не возникнет в базе данных SQL Server, учитывающей регистр.

  • Количество столбцов в таблице

    В SQL Server Compact 3.5 в целях отслеживания выделяется семь системных столбцов. Тем не менее, эти системные столбцы не влияют не максимальное число столбцов.

  • Ограничения NOT FOR REPLICATION

    В SQL Server Compact 3.5 параметр NOT FOR REPLICATION не поддерживается. Не используйте его для создания ограничений. Если в базе данных имеется ограничение NOT FOR REPLICATION, удалите ограничение и создайте его заново. Если указан параметр NOT FOR REPLICATION, ограничение все равно создается на подписчике SQL Server Compact 3.5, но уже не содержит параметр NOT FOR REPLICATION.

  • Время ожидания соединения

    Если соединение восстанавливается в течение настраиваемого пользователем интервала времени, то для восстановления подписок SQL Server Compact 3.5 после сбоя соединения выполняется перезапуск последнего успешно переданного блока данных. В этом случае синхронизация возможна даже тогда, когда канал связи ненадежен или временно недоступен.

  • Моментальные снимки

    SQL Server Compact 3.5 поддерживает сохранение моментальных снимков в расположении по умолчанию и в произвольном расположении. Чтобы указать расположение для моментальных снимков, отличное от расположения по умолчанию, воспользуйтесь хранимой процедурой sp_addmergepublication либо измените параметры существующей публикации с помощью SQL ServerManagement Studio.

    • Использование хранимой процедуры sp_addmergepublication

      Присвойте параметру @snapshot\_in\_defaultfolder значение FALSE, а параметру @alt\_snapshot\_folder — расположение папки для хранения моментальных снимков.

    • Изменение параметров существующей публикации

      В разделе Моментальный снимококна Свойства публикации снимите флажок Поместить файлы в папку по умолчанию, установите флажок Поместить файлы в следующую папку и укажите папку.

    Примечание

    SQL Server Compact 3.5 не поддерживает сжатие моментальных снимков.

Дополнительные сведения о моментальных снимках см. в разделе Настройка папки моментальных снимков..

Данные, которые не распространяются на подписчики SQL Server Compact 3.5

Следующие элементы можно включить в публикацию SQL Server, однако они не будут передаваться подписчику SQL Server Compact 3.5.

  • Проверочные ограничения.

  • Расширенные свойства.

  • Хранимые процедуры.

  • Представления.

  • Определенные пользователем функции.

  • Триггеры.

Поскольку репликация SQL Server Compact 3.5 не может передавать эти элементы, соответствующие возможности должны быть реализованы в приложении для SQL Server Compact 3.5. Это гарантирует сохранение соответствия между базами данных SQL Server Compact 3.5 и SQL Server. Например, если база данных SQL Server содержит проверочное ограничение, приложение для SQL Server Compact 3.5 должно выполнять соответствующую проверку.

Создание индексов в локальной базе данных SQL Server Compact 3.5

Для локальной базы данных SQL Server Compact 3.5 можно создавать уникальные индексы, даже если эта база данных является подписчиком публикации. Эта возможность является очень полезной, однако ее применение может вызвать проблемы, если на издателе отсутствует ограничение уникальности для столбца и издатель отправляет подписчику неуникальные данные. Допустим, что существует таблица T со столбцами C1 и C2 и для столбца C1 создан первичный ключ.

C1

C2

А

1

B

2

C

3

Для базы данных SQL Server Compact 3.5 выполняется начальная синхронизация. После синхронизации к базе данных подписчика добавляется уникальный индекс для столбца C2. В базу данных публикации изменения не вносятся.

При следующей синхронизации SQL Server вставляет следующие строки.

D

3

E

3

В этом случае при синхронизации происходит сбой, поскольку издатель пытается вставить для столбца C2 неуникальные значения. Сбои при синхронизации будут продолжаться до тех пор, пока из базы данных подписки не будет удалено указанное выше ограничение уникальности.