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


Ограничения удаленного доступа к данным

Удаленный доступ к данным в Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) имеет ограничения в следующих областях.

  • Учет регистра клавиатуры. Начиная с версии 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.
  • ROWGUID. Если удаленный доступ к данным используется для запроса столбцов из таблицы SQL Server, которая участвует в репликации на сервере, необходимо исключить системный столбец с атрибутом ROWGUIDCOL. По умолчанию этот столбец называется RowGuid.
    Например, для параметра SQLSelectString в методе Pull необходимо вместо инструкции SELECT * FROM Customers использовать инструкцию SELECT CompanyName, ContactName FROM Customers.
  • Триггеры. SQL Server Compact 3.5 не поддерживает триггеры. Однако триггеры могут быть установлены для таблицы SQL Server, из которой при удаленном доступе к данным запрашиваются данные. Для отслеживаемых таблиц триггеры SQL Server могут исполняться, когда изменения принудительно отправляются обратно в базу данных SQL Server. В логике триггера может потребоваться указать ключевое слово SET NOCOUNT ON. Это делается для того, чтобы не возвращалось количество затронутых строк, поскольку появление сообщения «Нет затронутых строк» вызывает ошибку в методе Push удаленного доступа к данным.
  • Таблицы и столбцы. Для отслеживаемых таблиц доступно 1017 столбцов (1024 столбца за вычетом семи системных столбцов, которые являются защищенными и используются для отслеживания таблиц удаленного доступа к данным).
  • Вычисляемые столбцы. Если набор записей содержит вычисляемые столбцы, при выполнении метода Pull возникает сбой.
  • Столбцы IDENTITY. Если для создания уникальности используются столбцы IDENTITY, удаленный доступ к данным не выполняет динамическое управление столбцами IDENTITY. Начальными значениями по умолчанию для столбца IDENTITY на устройстве всегда являются seed=1, increment=1. SQL Server Compact 3.5 позволяет изменить значения SEED и INCREMENT для столбца identity в таблице локальной базы данных с помощью инструкции ALTER TABLE. Это дает возможность вручную управлять диапазоном идентификаторов для каждого устройства. Перед вставкой записей в таблицу необходимо определить максимальное значение IDENTITY и установить значение seed. Например, если максимальное значение IDENTITY равно 99, используйте команду ALTER TABLE Orders ALTER COLUMN OrderId IDENTITY (100,1), чтобы установить следующее значение IDENTITY равным 100.

Ограничения схемы

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

Отслеживаемые удаленным доступом к данным методы Pull и Push используют оптимистический контроль совпадений. SQL Server не оставляет запрошенные записи заблокированными. Когда приложение вызывает метод Push, изменения, внесенные в локальную базу данных SQL Server Compact 3.5, безусловно переносятся в базу данных SQL Server. Это может привести к потере изменений, внесенных другими пользователями базы данных SQL Server.

Отслеживаемые методы Pull и Push следует использовать, если обновляемые записи логически секционированы и возникновение конфликтов является маловероятным. Например, отслеживаемые методы Pull и Push можно использовать в приложении для отдела обслуживания, которое обрабатывает сведения о специалистах, имеющих отдельные несовпадающие списки заявок на обслуживание.

В таблице SQL Server Compact 3.5, созданной с отслеживаемым методом Pull, можно выполнять следующие изменения схемы.

  • Изменять параметры seed или increment столбца идентификаторов.
  • Добавлять и удалять ограничения DEFAULT.
  • Добавлять и удалять внешние ключи.
  • Добавлять и удалять индексы.
  • Удалять таблицу.

Пока выполняется отслеживаемый метод Pull, в таблице SQL Server нельзя выполнять следующие изменения схемы.

  • Добавлять, удалять и переименовывать столбцы.
  • Переименовывать таблицу.
  • Удалять первичный ключ.
  • Изменять определение типа данных.

Чтобы использовать изменения, внесенные в схему таблицы SQL Server, необходимо удалить таблицу SQL Server Compact 3.5 и повторно запросить измененную таблицу SQL Server.