数据类型和 RDA
对于通过远程数据访问 (RDA) 来访问 MicrosoftSQL Server 数据库中的数据,下表显示了支持的数据类型和数据类型映射以及不支持的数据类型。
支持的数据类型
SQL Server 数据类型 |
SQL Server Compact 3.5 数据类型 |
---|---|
bigint (int 8) |
bigint |
binary (n) |
binary (n) |
bit |
bit |
Character (n)(同义词:char (n)) |
nationalcharacter (n) 或ntext 如果数据的长度为 4000 个字符或更少,则 RDA 将 SQL Servercharacter 数据映射到 SQL Server Compactnationalcharacter。否则,将数据映射到 SQL Server Compact ntext。 如果 ntext 数据的长度超过字符列的长度,那么当数据从 SQL Server Compact 发送到 SQL Server 时推送会失败。 |
character varying (n|max) (同义词:char varyingvarchar (n|max)) |
national character varying (n) 或ntext 如果数据的长度为 4000 个字符或更少,则 RDA 将 SQL Servercharacter varying 数据映射到 SQL Server Compactnational character varying;否则,将数据映射到 SQL Server Compactntext。 如果 character varying (max) 数据的长度超过 ntext 列的长度,那么当数据从 SQL Server 发送到 SQL Server Compact 时推送会失败。 |
date |
“YYYY-MM-DD”形式的 nchar(10) 值 备注 SQL Server Compact 存储宽字符。对此类型的转换支持由 SQL Server Compact SP1 版本提供。 |
datetime |
datetime |
datetime2 |
“YYYY-MM-DD hh:mm:ss.nnnnnnn”形式的 nvarchar(27) 值 备注 SQL Server Compact 存储宽字符。对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
datetimeoffset |
“YYYY-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm”形式的 nvarchar(34) 值 备注 SQL Server Compact 存储宽字符。对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
decimal |
不支持。请使用 numeric。 |
double precision |
double precision |
float |
float |
filestream |
image 备注 对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
geography |
image 备注 对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
geometry |
image 备注 对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
hierarchyid |
image 备注 对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
image |
image |
integer(同义词:int) |
integer |
money |
money |
national character (n)(同义词:nchar (n)) |
national character (n) |
national character varying (n) |
national character varying (n) |
national character varying (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 时同步会失败。 |
text |
ntext 如果 text 数据的长度超过 1,073,741,823 个字符,那么当数据从 SQL Server 发送到 SQL Server Compact 时同步会失败。 |
time |
“hh:mm:ss.nnnnnnn”形式的 nvarchar(16) 值 备注 SQL Server Compact 存储宽字符。对此类型的转换支持由 SQL Server Compact 3.5 SP1 版本提供。 |
tinyint |
tinyint |
uniqueidentifier |
uniqueidentifier |
varbinary (n) |
varbinary (n) |
varbinary (max) |
image 如果 varbinary (max) 数据的长度超过 image 列的长度,那么当数据从 SQL Server 发送到 SQL Server Compact 时同步会失败。 |
XML |
ntext |
不支持的数据类型
数据类型 |
说明 |
---|---|
sql_variant, UTCDATETIME, UDT |
不支持 不要将此数据类型的列包括在 RDA Pull 方法中。 |
使用数据类型
如果可能,请选择 SQL Server 和 SQL Server Compact 都支持的数据类型。这样,RDA 就不必执行数据映射。如果这是不可能的,请确保您的应用程序验证 SQL Server Compact 中存储的值,以确保 RDA 可以在 SQL Server 和 SQL Server Compact 之间映射这些值。
本身不支持 date、datetime2、datetimeoffset 和 time 的现有应用程序需要处理映射到兼容数据类型(如 nchar 和 nvarchar)的数据。
不能从主键类型为 char 或 varchar 且长度大于 4000 个字符的表请求数据。长度大于 4000 个字符的这些列类型将映射为 ntext,并且无法在 ntext 列上创建主键。
在重新初始化订阅之前,只要数据类型映射到 SQL Server Compact 订阅数据库中的 ntext,它就仍为 ntext,即使在 SQL Server 中更改了该类型。此外,如果在 SQL Server Compact 中将数据类型映射为 ntext,则 SQL Server 数据类型上的任何索引(如 nvarchar (MAX))都将被忽略,并且不会在 SQL Server Compact 中创建。