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 系统存储过程,查看和修订复制数据类型映射。
·sp_helpdatatypemap
·sp_getdefaultdatatypemapping
·sp_setdefaultdatatypemapping
有关详细信息,请参阅 系统存储过程 (Transact-SQL) 。