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