DB2 的数据提供程序

平台兼容性

代码页转换

数据访问接口支持单字节字符集 (SBCS)、混合字节字符集 (MBCS)、双字节字符集 (DBCS) 以及 Unicode - UTF8 [1208](这是 8 位 Unicode 转换格式)的组合。

主机 CCSID

“数据访问接口”要求具有一个主机 CCSID 的值(编码字符集标识符),从而在字符串数据上执行代码页转换。 默认主机 CCSID 值是 EBCDIC – U.S./Canada [37] 。 通常,适用于 z/OS 和 IBM i 的 IBM DB2 数据库服务器使用 EBCDIC (扩展二进制编码的十进制交换代码) 。

PC 代码页

“数据访问接口”要求具有一个 PC 代码页的值,从而在字符串数据上执行代码页转换。 默认的 PC 代码页是 ANSI – Latin I [1252] 。 通常情况下,数据使用者可以使用 ANSI(美国国家标准协会)或 Unicode。

以字符方式处理二进制数据

DB2 的数据提供程序基于 DB2 数据类型和 Windows 使用者数据类型自动与二进制 (CCSID 65535) 和字符串数据类型相互转换。 DB2 编码由主机 CCSID 确定。 Windows 编码由 PC 代码页确定。

数据类型映射

本主题介绍对 OLE DB 数据类型的所有数据类型映射。

DB2 到 ADO.NET 数据类型映射

下表介绍了 DB2 数据类型到 DB2 的 ADO.NET 提供程序 (MsDb2Client) 数据类型的映射 (MsDb2Type)。

MsDb2Type DB2 数据类型 说明
BigInt Bigint 大整数是 8 字节二进制整数。
二进制 二进制 二进制是固定长度的二进制字符串。
bit Smallint 小整数是 2 字节二进制整数。
BLOB BLOB 二进制大对象是可变长度的字符串,用于存储非文本或二进制数据。
Char Char Character(字符)是一个固定长度的 SBCS 或 MBCS 字符串。
CLOB CLOB 可变长度的字符大对象是可变长度的字符串。 字符串的最大长度与 DB2 平台和版本有关。
Date Date Date(日期)是一个 10 字节的字符串。
DBCLOB DCLOB 可变长度的双字节字符型对象是可变长度的仅限图形双字节的字符串。 字符串的最大长度与 DB2 平台和版本有关。
小数 小数 Decimal(十进制)是一个打包的十进制数。
Double Double Double(双精度)是一个 8 字节的双精度浮点数。
Graphic Graphic Graphic(图形)是一个仅包含固定长度 DBCS 的字符串。
int Integer Integer(整数)是一个 4 字节的二进制整数。
数字 数字 Numeric(数值)是一个打包的十进制数。
Real Real Real(实型)是一个 4 字节的单精度浮点数。
SmallInt Smallint 小整数是 2 字节二进制整数。
时间 时间 Time(时间)是一个 8 字节的时间字符串。
时间戳 时间戳 Timestamp(时间戳)是一个表示日期、时间和微秒的 26 字节的字符串。
TinyInt Smallint 小整数是 2 字节二进制整数。
VarBinary Varbinary 可变的二进制是可变长度的二进制字符串。
VarChar Varchar Varying character(不同字符)是一个不同长度的 SBCS 或 MBCS 字符串。
VarGraphic Vargraphic Varying graphic(不同图形)是一个仅包含不同长度 DBCS 的字符串。
VarWideChar Vargraphic 可变的图形是仅限可变长度的 Unicode 字符串。
VarWideGraphic Vargraphic 可变的图形是仅限可变长度的 Unicode 字符串。
WideChar Graphic 图形是固定长度的 Unicode 字符串。
Xml XML 格式正确的 XML 文档字符串。

DB2 至 OLE DB 的数据类型映射

下表描述对 OLE DB 数据类型的 DB2 数据类型映射。

OLE DB 数据类型 DB2 数据类型 说明
DBTYPE_I8 Bigint 大整数是 8 字节二进制整数。
DBTYPE_Bytes BINARY 二进制是固定长度的二进制字符串
DBTYPE_Bytes BLOB 二进制大对象是可变长度的字符串,用于存储非文本或二进制数据。
DBTYPE_STR Char Character(字符)是一个固定长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Char Unicode 字符是一个固定长度的 MBCS 字符串。
DBTYPE_STR CLOB 可变长度的字符大对象是可变长度的字符串。 字符串的最大长度与 DB2 平台和版本有关。
DBTYPE_DBDate 日期 Date(日期)是一个 10 字节的字符串。
DBTYPE_Decimal 小数 Decimal(十进制)是一个打包的十进制数。
DBTYPE_R8 Double Double(双精度)是一个 8 字节的双精度浮点数。
DBTYPE_R8 Float Float(浮点数)是一个 8 字节的双精度浮点数。
DBTYPE_WSTR Graphic Graphic(图形)是一个仅包含固定长度 DBCS 的字符串。
DBTYPE_I4 Integer Integer(整数)是一个 4 字节的二进制整数。
DBTYPE_STR Long Varchar Varying character(不同字符)是一个不同长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Long Varchar 可变的可变长度的 Unicode 字符串。
DBTYPE_WSTR Long Vargraphic Varying graphic(不同图形)是一个仅包含不同长度 DBCS 的字符串。
DBTYPE_Numeric Numeric Numeric(数值)是一个打包的十进制数。
DBTYPE_I2 Smallint 小整数是 2 字节二进制整数。
DBTYPE_R4 Real Real(实型)是一个 4 字节的单精度浮点数。
DBTYPE_DBTime 时间 Time(时间)是一个 8 字节的时间字符串。
DBTYPE_DBTimestamp 时间戳 Timestamp(时间戳)是一个表示日期、时间和微秒的 26 字节的字符串。
DBTYPE_Bytes Varbinary 可变的二进制是可变长度的二进制字符串。
DBTYPE_STR Varchar Varying character(不同字符)是一个不同长度的 SBCS 或 MBCS 字符串。
DBTYPE_WSTR Varchar 可变的可变长度的 Unicode 字符串。
DBTYPE_WSTR VarGraphic Varying graphic(不同图形)是一个仅包含不同长度 DBCS 的字符串。

使用具有 IDBSchemaRowset::GetRowset 的预定义架构行集检索 OLE DB 中的架构信息。 数据访问接口基于 IBM DB2 平台和版本公布 PROVIDER_TYPES 行集以表明 DB2 至 OLE DB 数据类型支持(类型、映射、限制)。

DB2 for z/OS

数据提供程序支持在连接到 DB2 for z/OS 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
Smallint DBType_12 5
Integer DBType_14 10
Bigint DBType_18 19
二进制 DBType_Bytes 255
Real DBType_R4 21
Float DBType_R8 53
Double DBType_R8 53
小数 DBType_Decimal 31 0 31
Graphic DBType_WSTR 127
VarGraphic DBType_WSTR 16352
Char DBType_STR 255
Varchar DBType_STR 32672
Char DBType_WSTR 255
Varchar DBType_WSTR 32672
Numeric DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Long Varchar DBType_STR 32704
Long Varchar DBType_WSTR 32704
Long Vargraphic DBType_WSTR 16352
Varbinary DBTypte_Bytes 32704

DB2 for IBM i

数据提供程序支持在连接到 DB2 for IBM i 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
二进制 DBType_Bytes 32765
Smallint DBType_12 5
Integer DBType_14 10
Bigint DBType_18 19
Real DBType_R4 24
Float DBType_R8 53
Double DBType_R8 53
小数 DBType_Decimal 63 0 31
Graphic DBType_WSTR 16382
VarGraphic DBType_WSTR 16369
Char DBType_STR 32765
Varchar DBType_STR 32739
Char DBType_WSTR 32765
Varchar DBType_WSTR 32739
Numeric DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Varbinary DBType_Bytes 32739

DB2 for LUW

数据提供程序支持在连接到 DB2 for LUW 时访问这些数据类型。

DB2 Type_name OLE DB data_type Column_size Minimum_scale Maximum_scale
二进制 DBType_Bytes 254
Smallint DBType_12 5
Integer DBType_14 10
Bigint DBType_18 19
Real DBType_R4 24
Float DBType_R8 53
Double DBType_R8 53
小数 DBType_Decimal 31 0 31
Graphic DBType_WSTR 127
VarGraphic DBType_WSTR 16336
Char DBType_STR 254
Varchar DBType_STR 4000
Char DBType_WSTR 254
Varchar DBType_WSTR 4000
Char() for BIT data DBType_Bytes 254
Varchar() for BIT data DBType_Bytes 32672
Numeric DBType_Numeric 31 0 31
日期 DBType_DBDate 10
时间 DBType_DBTime 8
时间戳 DBType_Timestamp 26
BLOB DBType_Bytes 2147483647
CLOB DBType_STR 2147483647
Long Varchar DBType_STR 32700
Long Varchar DBType_STR 32700
Long Varchar DBType_WSTR 16350
Varbinary DBTYPE_BYTES 32762

SQL Server Integration Services

在使用来自 Microsoft SQL Server Management Studio 的 SQL Server Integration Services 导入和导出向导时,您可以通过编辑 XML 映射文件来自定义默认数据转换。 XML 文件位于 C:\Program Files\Microsoft SQL Server\130\DTSMappingFiles(适用于 64 位)和 C:\Program Files (x86) \Microsoft SQL Server\130\DTSMappingFiles(适用于 32 位)。

SQL Server Replication Services

基于从 SQL Server 到 DB2 数据类型的默认映射,SQL Server 复制可能会错误地转换数据。 我们建议管理员和开发人员使用以下 SQL Server 系统存储过程,查看和修订复制数据类型映射。