Ограничения репликации
При использовании репликации слиянием с подписчиками Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) на публикацию накладывается несколько ограничений, описанных в данном разделе.
Ограниченные возможности изменения схемы на подписчике
Хотя на подписчике можно вносить определенные изменения в схему, однако возможности по внесению изменений ограничены. В следующей таблице описываются изменения схемы, которые можно и которые нельзя выполнять на подписчике.
Действие | Разрешено для реплицированной таблицы | ||
---|---|---|---|
Удаление таблицы |
Нет |
||
Переименование таблицы |
Нет |
||
Добавление и удаление столбца |
Нет |
||
Изменение начального значения или приращения столбца идентификаторов |
Да |
||
Добавление или удаление умолчаний |
Да |
||
Добавление или удаление первичного ключа |
Нет |
||
Добавление или удаление внешнего ключа |
Нет |
||
Добавление или удаление индекса
|
Да |
||
Переименование индекса |
Да |
![]() |
---|
Изменения схемы нельзя выполнять для системных таблиц. |
Дополнительные требования
К подписчикам SQL Server Compact Edition применяются следующие правила.
- Использование памяти
После того как была запрошена повторная инициализация, размер базы данных SQL Server Compact Edition в процессе синхронизации может временно увеличиться в два раза по сравнению с фактическим размером. Однако после завершения синхронизации будет выполнено сжатие (в зависимости от политики автоматического сжатия). - Сверка фильтра подписки
Сверка фильтра позволяет издателю проверить значение фильтра подписчика перед синхронизацией данных. Если на подписчике значение фильтра было изменено, издатель требует, чтобы была выполнена повторная инициализация подписчика. При синхронизации данных с SQL Server 2005, SQL Server Compact Edition, может использовать сверку фильтра.Примечание.
Свойство HostName содержит значение динамического фильтра для подписки. Чтобы изменить значение динамического фильтра для подписчика путем указания нового свойства HostName, необходимо перед синхронизацией вызвать метод Reinitialize . - Учет регистра букв
Строчные и прописные буквы в базах данных SQL Server Compact Edition не различаются. Объекты и данные в базах данных SQL Server Compact Edition и базах данных SQL Server обрабатываются по-разному. Например, в базе данных SQL Server таблицы с именами MYTABLE и mytable будут считаться разными таблицами. А в базе данных SQL Server Compact Edition такие таблицы вызовут конфликт имен. Аналогично значения MYVALUE и myvalue в базе данных SQL Server Compact Edition приведут к нарушению первичного ключа, поскольку они будут считаться одним значением. А базе данных SQL Server, учитывающей регистр, такое нарушение не возникнет. - Количество столбцов в таблице
В SQL Server Compact Edition в целях отслеживания выделяется семь системных столбцов. Тем не менее эти системные столбцы не влияют не максимальное число столбцов. - Ограничения NOT FOR REPLICATION
В SQL Server Compact Edition параметр NOT FOR REPLICATION не поддерживается. Не используйте его для создания ограничений. Если в базе данных имеется ограничение NOT FOR REPLICATION, удалите ограничение и создайте его заново. Если указан параметр NOT FOR REPLICATION, ограничение все равно создается на подписчике SQL Server Compact Edition, но уже не содержит параметр NOT FOR REPLICATION. - Время ожидания соединения
Если соединение восстанавливается в течение настраиваемого пользователем интервала времени, то для восстановления подписок SQL Server Compact Edition после сбоя соединения выполняется перезапуск последнего успешно переданного блока данных. В этом случае синхронизация возможна даже тогда, когда канал связи ненадежен или временно недоступен. - Моментальные снимки
SQL Server Compact Edition поддерживает сохранение моментальных снимков в расположении по умолчанию и в произвольном расположении. Чтобы указать расположение для моментальных снимков, отличное от расположения по умолчанию, воспользуйтесь хранимой процедурой sp_addmergepublication либо измените параметры существующей публикации с помощью SQL Server Management Studio.- Использование хранимой процедуры sp_addmergepublication
Присвойте параметру @snapshot_in_defaultfolder значение FALSE, а параметру @alt_snapshot_folder — расположение папки для хранения моментальных снимков. - Изменение параметров существующей публикации
В разделе Моментальный снимок окна Свойства публикации снимите флажок Поместить файлы в папку по умолчанию, установите флажок Поместить файлы в следующую папку и укажите папку.
Примечание.
SQL Server Compact Edition не поддерживает сжатие моментальных снимков. - Использование хранимой процедуры sp_addmergepublication
Дополнительные сведения о моментальных снимках см. в разделе Настройка папки моментальных снимков..
Данные, не передаваемые подписчику SQL Server Compact Edition
Следующие элементы можно включить в публикацию SQL Server, однако они не будут передаваться подписчику SQL Server Compact Edition.
- Проверочные ограничения.
- Расширенные свойства.
- Хранимые процедуры.
- Представления.
- Определенные пользователем функции.
- Триггеры.
Поскольку репликация SQL Server Compact Edition не может передавать эти элементы, соответствующие возможности должны быть реализованы в приложении для SQL Server Compact Edition. Это гарантирует сохранение соответствия между базами данных SQL Server Compact Edition и SQL Server. Например, если база данных SQL Server содержит проверочное ограничение, приложение для SQL Server Compact Edition должно выполнять соответствующую проверку.
Создание индексов в локальной базе данных SQL Server Compact Edition
Для локальной базы данных SQL Server Compact Edition можно создавать уникальные индексы, даже если эта база данных является подписчиком публикации. Эта возможность является очень полезной, однако ее применение может вызвать проблемы, если на издателе отсутствует ограничение уникальности для столбца и издатель отправляет подписчику неуникальные данные. Допустим, что существует таблица T со столбцами C1 и C2 и для столбца C1 создан первичный ключ.
C1 |
C2 |
А |
1 |
B |
2 |
C |
3 |
Для базы данных SQL Server Compact Edition выполняется начальная синхронизация. После синхронизации к базе данных подписчика добавляется уникальный индекс для столбца C2. В базу данных публикации изменения не вносятся.
При следующей синхронизации SQL Server вставляет следующие строки.
D |
3 |
E |
3 |
В этом случае при синхронизации происходит сбой, поскольку издатель пытается вставить для столбца C2 неуникальные значения. Сбои при синхронизации будут продолжаться до тех пор, пока из базы данных подписки не будет удалено указанное выше ограничение уникальности.