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


Типы данных и репликация

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

Поддерживаемые типы данных и сопоставления типов данных

В следующей таблице указаны сопоставления типов данных, выполняемые при репликации между SQL Server и MicrosoftSQL 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 Servercharacter с типом SQL Server Compactnational character. В противном случае символьные данные сопоставляются с типом SQL Server Compactntext. Если размер данных типа ntext превышает размер столбца типа character, в процессе отправки данных из базы данных SQL Server Compact в базу данных SQL Server возникает сбой синхронизации.

character varying(n)(синоним: varchar(n)) varchar(n))

national character varying или ntext

Если размер данных составляет 4000 символов или менее, репликация SQL Server Compact сопоставляет данные типа SQL Servercharacter varying с данными типа SQL Server Compactnational character varying. В противном случае эти данные сопоставляются с типом данных SQL Server Compactntext. Если размер данных типа 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(int8), при создании этой подписки для 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)