Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » MobiLink 参考 » 远程数据库和统一数据库之间的 MobiLink 数据映射

 

Adaptive Server Enterprise 数据映射

映射到 Adaptive Server Enterprise 统一数据类型

下表列出了 SQL Anywhere 和 UltraLite 远程数据类型与 Adaptive Server Enterprise 统一数据类型的映射关系。例如,远程数据库中类型为 FLOAT 的列对应统一数据库中的类型 REAL。

最大列长度 (MCL) 取决于 Adaptive Server Enterprise 的页面大小。如果页面大小为 2K,则 MCL 为 1954;如果页面大小为 4K,则 MCL 为 4002。有关 MCL 的信息,请参见 Adaptive Server Enterprise 文档。

SQL Anywhere 或 UltraLite 数据类型 Adaptive Server Enterprise 数据类型 注释

BIGINT

NUMERIC(20)1 或 BIGINT2

BIT

BIT

BINARY(n=<MCL)

BINARY(n)

BINARY(n>MCL)

IMAGE

CHAR(n=<MCL)

VARCHAR(n)

CHAR(n>MCL)

TEXT

下载时,确保值不要过长。

DATE

DATE3 或 DATETIME4

对于 Adaptive Server Enterprise DATETIME,年份必须在 1753-9999 范围内。

对于 SQL Anywhere 和 UltraLite,时间值格式必须为 00:00:00。

DATETIME

DATETIME

Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。

下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。

如果 DATETIME 用于主键,冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。

DECIMAL(p<39, s)

DECIMAL(p,s)

Adaptive Server Enterprise NUMERIC 可以精确到 1 至 38 位数 (p<39)。

DECIMAL(p>=39,s)

Adaptive Server Enterprise 中没有相应的数据类型。

DOUBLE

DOUBLE PRECISION

FLOAT(p)

FLOAT(p)

IMAGE

IMAGE

INTEGER

INTEGER

LONG BINARY

IMAGE

LONG NVARCHAR

UNITEXT

LONG VARBIT

TEXT

LONG VARCHAR

TEXT

MONEY

MONEY

NCHAR(c=<MCL)

UNIVARCHAR(c/2)

NCHAR(c>MCL)

UNITEXT

下载时,确保值不要过长。

NTEXT

UNITEXT

NUMERIC(p<39, s)

NUMERIC(p,s)

Adaptive Server Enterprise 的 DECIMAL 可以精确到 1 至 38 位数 (p<39)。

NUMERIC(p>=39,s)

NVARCHAR(c=<MCL)

UNIVARCHAR(c/2)

NVARCHAR(c>MCL)

UNITEXT

下载时,确保值不要过长。

REAL

REAL

SMALLDATETIME

DATETIME4

SQL Anywhere 和 UltraLite SMALLDATETIME 作为 TIMESTAMP 来实现。

Adaptive Server Enterprise DATETIME 精确到分钟。29.998 或更低的秒值将向下舍入为最接近的分钟;29.999 或更高的秒值将向上舍入为最接近的分钟。SQL Anywhere 或 UltraLite SMALLDATETIME 精确到微秒。为了成功地进行同步,SQL Anywhere 或 UltraLite SMALLDATETIME 必须舍入到分钟。此外,年份必须在 1753-9999 范围内。

SMALLINT

SMALLINT

SMALLMONEY

SMALLMONEY

TEXT

TEXT

TIME

TIME3 或 DATETIME4

Adaptive Server Enterprise TIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。下载时,SQL Anywhere 会保留 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。如果 TIME 用于主键,冲突解决可能会失败。为了成功同步 TIME,您应将小数秒舍入到 10 毫秒。

TIMESTAMP

DATETIME

Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。

下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。

如果 DATETIME 用于主键,冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。

TINYINT

TINYINT

UNIQUEIDENTIFIER

CHAR(36)

UNIQUEIDENTIFIERSTR

CHAR(36)

不使用 UNIQUEIDENTIFIERSTR。请改用 UNIQUEIDENTIFIER。

UNSIGNED BIGINT

NUMERIC(20)1 或 UNSIGNED BIGINT2

UNSIGNED INTEGER

UNSIGNED INT

UNSIGNED SMALLINT

UNSIGNED SMALLINT

UNSIGNED TINYINT

TINYINT

VARBINARY(n=<MCL)

VARBINARY

VARBINARY(n>MCL)

IMAGE

VARBIT(n=<MCL)

VARCHAR(n)

VARBIT(n>MCL)

TEXT

VARCHAR(n=<MCL)

VARCHAR(n)

VARCHAR(n>MCL)

TEXT

XML

TEXT

1 只适用于 15.0 版本之前的 Adaptive Server Enterprise。

2 只适用于 Adaptive Server Enterprise 版本 15.0 或更高版本。

3 只适用于 Adaptive Server Enterprise 版本 12.5.1 或更高版本。

4 只适用于 12.5.1 版本之前的 Adaptive Server Enterprise。

映射到 SQL Anywhere 或 UltraLite 远程数据类型

下表列出了 Adaptive Server Enterprise 统一数据类型与 SQL Anywhere 和 UltraLite 远程数据类型的映射关系。例如,统一数据库中类型为 DOUBLE PRECISION 的列对应远程数据库中的类型 DOUBLE。

Adaptive Server Enterprise 数据类型 SQL Anywhere 或 UltraLite 数据类型 注释

BIGINT1

BIGINT

BINARY(n)

BINARY(n)

BIT

BIT

CHAR(n)

VARCHAR(n)

SQL Anywhere CHAR/NCHAR 和 Adaptive Server Enterprise CHAR/NCHAR 之间不存在对等关系。SQL Anywhere CHAR/NCHAR 与 VARCHAR/NVARCHAR 对等。不应在要同步的统一数据库列中使用 CHAR/NCHAR。如果必须使用非 SQL Anywhere CHAR/NCHAR,请用 -b 选项运行 MobiLink 服务器。

DATE

DATE

对于 SQL Anywhere 和 UltraLite,时间值格式必须为 00:00:00。

DATETIME

DATETIME

Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6 之一。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。

下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。

DECIMAL(p,s)

DECIMAL(p,s)

DOUBLE PRECISION

DOUBLE

FLOAT(p)

FLOAT(p)

IMAGE

LONG BINARY

INT

INT

MONEY

MONEY

NCHAR(n)

VARCHAR(n)

与 SQL Anywhere NCHAR 和 NVARCHAR 不同,Adaptive Server Enterprise NCHAR 和 NVARCHAR 存储多字节本国字符串。在多字节环境中,使用 SQL Anywhere 或 UltraLite VARCHAR。

NUMERIC(p,s)

NUMERIC(p,s)

NVARCHAR(n)

VARCHAR(n)

与 SQL Anywhere NCHAR 和 NVARCHAR 不同,Adaptive Server Enterprise NCHAR 和 NVARCHAR 存储多字节本国字符串。在多字节环境中,使用 SQL Anywhere 或 UltraLite VARCHAR。

REAL

REAL

SMALLDATETIME

SMALLDATETIME

SQL Anywhere 和 UltraLite SMALLDATETIME 作为 TIMESTAMP 来实现。

Adaptive Server Enterprise SMALLDATETIME 精确到分钟。29.998 或更低的秒值将向下舍入为最接近的分钟;29.999 或更高的秒值将向上舍入为最接近的分钟。SQL Anywhere 或 UltraLite SMALLDATETIME 精确到微秒。为了成功地进行同步,SQL Anywhere 或 UltraLite SMALLDATETIME 必须舍入到分钟。此外,年份必须在 1900-2078 范围内。

SMALLINT

SMALLINT

SMALLMONEY

SMALLMONEY

TEXT

LONG VARCHAR

TIME

TIME

Adaptive Server Enterprise TIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6 之一。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。

下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。冲突解决可能会失败。为了成功同步 TIME,建议您将小数秒舍入到 10 毫秒。

TIMESTAMP

VARBINARY(8)

在 Adaptive Server Enterprise 内,TIMESTAMP 是一个二进制计数器,它会随行的每一次更改而相应递增。因此,每个表只能包含一个 TIMESTAMP 列,并且对其进行同步没有任何意义。如果必须对其进行同步,请将其映射到 SQL Anywhere 或 UltraLite 中的 VARBINARY(8) 数据类型。

不能显式地插入或更新 TIMESTAMP 列,因为它由服务器进行维护。当您为含有这种列的表实现上载脚本时,请牢记这一点。

TINYINT

TINYINT

UNSIGNED BIGINT1

UNSIGNED BIGINT

UNSIGNED INT1

UNSIGNED INT

UNSIGNED SMALLINT1

UNSIGNED SMALLINT

VARBINARY(n)

VARBINARY(n)

VARCHAR(n)

VARCHAR(n)

UNICHAR(n)

NVARCHAR(n)

在 UltraLite 中不可用。

UNITEXT1

LONG NVARCHAR

在 UltraLite 中不可用。

UNIVARCHAR(n)

NVARCHAR(n)

在 UltraLite 中不可用。

1 只适用于 15.0 版本之前的 Adaptive Server Enterprise。