Типы данных и репликация
SQL Server Compact поддерживает не все типы данных, поддерживаемые SQL Server. Приложение SQL Server Compact, являющееся подписчиком публикации SQL Server, должно сопоставлять неподдерживаемые типы данных с поддерживаемыми.
Поддерживаемые типы данных и сопоставления типов данных
В следующей таблице указаны сопоставления типов данных, выполняемые при репликации между SQL Server и Microsoft SQL Server Compact 3.5. В таблице перечисляются сопоставления для каждого типа данных SQL Server и описываются ограничения и особое поведение.
Тип данных SQL Server | Тип данных SQL Server Compact |
---|---|
bigint |
Bigint |
binary(n) |
binary(n) |
bit |
Bit |
character(n)(синоним: char(n)) |
national character(n) или ntext Если размер данных составляет 4000 символов или менее, репликация SQL Server Compact сопоставляет тип данных SQL Server character с типом SQL Server Compact national character. В противном случае символьные данные сопоставляются с типом SQL Server Compact ntext. Если размер данных типа ntext превышает размер столбца типа character, в процессе отправки данных из базы данных SQL Server Compact в базу данных SQL Server возникает сбой синхронизации. |
character varying(n)(синоним: varchar(n)) varchar(n)) |
national character varying или ntext Если размер данных составляет 4000 символов или менее, репликация SQL Server Compact сопоставляет данные типа SQL Server character varying с данными типа SQL Server Compact national character varying. В противном случае эти данные сопоставляются с типом данных SQL Server Compact ntext. Если размер данных типа ntext превышает размер столбца типа character varying, в процессе отправки данных из базы данных SQL Server Compact в базу данных SQL Server возникает сбой синхронизации. |
character varying(MAX)(синоним: varchar(MAX)) |
ntext Если размер данных типа character varying(MAX) превышает размер столбца типа ntext, в процессе отправки данных из базы данных SQL Server в базу данных SQL Server Compact возникает сбой синхронизации. |
Computed Columns |
Не поддерживается. Если при настройке параметров с помощью мастера публикации указывается, что будут использоваться подписки SQL Server Compact, все столбцы типа Computed Column будут вертикально секционированы из публикации. Если мастер не используется, необходимо исключить из публикации столбцы, содержащие данные этого типа. |
date |
Значение типа nchar(10) в формате «ГГГГ-ММ-ДД»
Примечание.
SQL Server Compact хранит расширенные знаки. Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
datetime |
Datetime |
datetime2 |
Значение nvarchar(27) в формате «ГГГГ-ММ-ДД-чч:мм:сс.ннннннн»
Примечание.
SQL Server Compact хранит расширенные знаки. Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
datetimeoffset |
Значение nvarchar(34) в формате «ГГГГ-ММ-ДД-чч:мм:сс.ннннннн [+/-] чч:мм»
Примечание.
SQL Server Compact хранит расширенные знаки. Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
decimal |
Не поддерживается. Используйте тип numeric. |
double precision |
double precision |
float |
float |
geography |
image
Примечание.
Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
geometry |
image
Примечание.
Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
image |
image |
integer(синоним: int) |
integer |
money |
money |
national character(n)(синоним: nchar(n)) nchar(n)) |
national character(n) |
national character varying(n)(синоним: nvarchar(n)) nvarchar(n)) |
national character varying(n) |
national character varying(MAX)(синоним: nvarchar(MAX)) nvarchar(MAX)) |
ntext Если размер данных типа national character varying(MAX) превышает размер столбца типа ntext, в процессе отправки данных из базы данных SQL Server в базу данных SQL Server Compact возникает сбой синхронизации. |
ntext |
ntext |
numeric(синоним: decimal, dec) |
numeric |
real |
Real |
smalldatetime |
datetime Если точность данных типа datetime превышает точность столбца типа smalldatetime, при отправке данных из базы данных SQL Server Compact в базу данных SQL Server происходит сбой синхронизации. |
smallint (int 2) |
smallint (int 2) |
smallmoney |
money Если точность данных типа money превышает точность столбца типа smallmoney, при отправке данных из базы данных SQL Server Compact в базу данных SQL Server происходит сбой синхронизации. |
sql_variant |
ntext Если в столбце sql_variant содержатся двоичные данные, размер этих данных должен быть кратен 2. В противном случае возникнет ошибка преобразования. |
text |
ntext Если размер данных типа text превышает 1 073 741 823 символа, при отправке данных из базы данных SQL Server в базу данных SQL Server Compact произойдет сбой синхронизации. |
time |
Значение nvarchar(16) в формате «чч:мм:сс.ннннннн»
Примечание.
SQL Server Compact хранит расширенные знаки. Поддержка преобразования этого типа была предоставлена в версии SQL Server Compact 3.5 с пакетом обновления 1 (SP1).
|
timestamp |
Не поддерживается. Если при настройке параметров с помощью мастера публикации указывается, что будут использоваться подписки SQL Server Compact, все столбцы типа timestamp будут вертикально секционированы из публикации. Если мастер не используется, необходимо исключить из публикации столбцы, содержащие данные этого типа. Если столбец timestamp/rowversion не был вертикально секционирован, то данные в столбце не реплицируются. |
tinyint |
tinyint |
uniqueidentifier |
uniqueidentifier |
varbinary(n) |
varbinary(n) |
varbinary(MAX) |
image Если размер данных типа varbinary(MAX) превышает размер столбца типа image, в процессе отправки данных из базы данных SQL Server в базу данных SQL Server Compact возникает сбой синхронизации. |
varchar |
См. тип character varying |
XML |
ntext |
Если возможно, следует выбирать типы данных, которые поддерживаются как SQL Server, так и SQL Server Compact. При этом в процессе репликации не придется выполнять сопоставление данных. Если это невозможно, приложение должно проверять значения, хранящиеся в базе данных SQL Server Compact, чтобы гарантировать, что при репликации можно будет сопоставить значения SQL Server и SQL Server Compact.
Существующим приложениям, не поддерживавшим изначально типы date, datetime2, datetimeoffset и time, придется обрабатывать данные, сопоставленные с совместимыми типами данных, например nchar и nvarchar. Дополнительные сведения о типах данных SQL Server см. в разделе Типы данных в электронной документации SQL Server.
Ограничения для типов данных
На подписчиков SQL Server Compact налагаются следующие ограничения.
- Индексы
Не поддерживается публикация таблиц с индексами по столбцам типа varchar (MAX), nvarchar(MAX), varbinary(MAX) и XML. При создании подписки SQL Server Compact для подобных таблиц произойдет сбой, поскольку эти типы столбцов сопоставляются с типами ntext или image, а для подобных столбцов нельзя создать первичный ключ. - Столбцы идентификаторов
Столбцы идентификаторов SQL Server Compact должны иметь тип integer (int 4) или bigint (int 8). Столбцы идентификаторов SQL Server Compact не могут иметь тип smallint, tinyint, decimal или numeric. Если в публикации, на которую выполнена подписка, столбцы идентификаторов не принадлежат к типу integer (int 4) или bigint (int 8), при создании этой подписки для SQL Server Compact произойдет сбой.
SQL Server Compact позволяет изменять начальное значение и приращение в базе данных подписчика с помощью инструкций ALTER TABLE имя_таблицы ALTER COLUMN имя_столбца IDENTITY (начальное значение, приращение). Это позволяет вручную управлять диапазонами идентификаторов. Однако если публикация включает столбец идентификаторов и диапазон идентификаторов регулируется издателем, в базе данных подписчика не следует изменять начальное значение и приращение. Если указать начальное значение, выходящее за верхнюю границу выделенного диапазона идентификаторов, SQL Server Compact возвратит сообщение об ошибке при вставке новой записи в таблицу. При следующей синхронизации издатель устранит эту проблему путем выделения данному подписчику нового диапазона идентификаторов. - Неподдерживаемые типы данных
При подписке на публикацию SQL Server 2005 не поддерживаются типы данных computed column, timestamp, date, time, hierarchyid, filestream и utcdatetime. - Типы данных CHAR и NTEXT в SQL Server и SQL Server Compact
SQL Server позволяет, чтобы тип данных CHAR имел больший размер, чем тип данных CHAR для SQL Server Compact. Чтобы реплицировать соответствующее содержимое, в SQL Server Compact тип данных CHAR большого размера преобразуется в тип данных NTEXT. Хотя SQL Server и SQL Server Compact позволяют изменять тип данных столбца CHAR, ни один из этих продуктов не позволяет изменять тип данных столбца NTEXT. Поэтому, хотя на стороне SQL Server тип данных CHAR большого размера можно изменить, на стороне SQL Server Compact изменение невозможно, поскольку соответствующий тип данных больше не является типом CHAR. - Типы данных NTEXT или IMAGE
Если столбец сопоставлен с типом ntext, а SQL Server изменяет тип данных для этого столбца на тип char, nchar и т. п., у столбца в базе данных SQL Server Compact остается тип ntext, пока не будет выполнена повторная инициализация подписчика.
См. также
Основные понятия
Типы данных и удаленный доступ к данным
Другие ресурсы
Управляемое сопоставление типов данных (SQL Server Compact)
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)