平台兼容性
代码页转换
数据提供程序支持单字节字符集(SBCS)、混合字节字符集(MBCS)双字节字符集(DBCS)和 Unicode - UTF8 [1208]的组合,这是一种 8 位 Unicode 转换格式。
主机 CCSID
数据提供程序需要主机 CCSID(编码字符集标识符)的值,用于对字符串数据执行代码页转换。 默认主机 CCSID 值为 EBCDIC – 美国/加拿大 [37]。 通常,适用于 z/OS 和 IBM i 的 IBM DB2 数据库服务器使用 EBCDIC(扩展的二进制编码十进制交换代码)。
电脑代码页
数据提供程序需要 PC 代码页的值,用于对字符串数据执行代码页转换。 默认电脑代码页为 ANSI – 拉丁文 I [1252]。 通常,数据使用者使用 ANSI(美国国家标准研究所)或 Unicode。
将二进制文件处理为字符
DB2 的数据提供程序根据 DB2 数据类型和 Windows 使用者数据类型自动转换为二进制数据(CCSID 65535)和字符串数据类型。 DB2 编码由主机 CCSID 确定。 Windows 编码由电脑代码页确定。
数据类型映射
本主题介绍所有数据类型映射到 OLE DB 数据类型。
DB2 到 ADO.NET 数据类型映射
下表介绍了 DB2 数据类型映射到 db2 (MsDb2Client) 数据类型(MsDb2Type)ADO.NET 提供程序。
| MsDb2Type | DB2 数据类型 | 说明 |
|---|---|---|
| BigInt | Bigint | 大整数是一个 8 字节二进制整数。 |
| Binary | Binary | 二进制文件是固定长度的二进制字符串。 |
| Bit | Smallint | 小整数是一个双字节二进制整数。 |
| BLOB | BLOB | 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。 |
| Char | Char | 字符是固定长度的 SBCS 或 MBCS 字符串。 |
| CLOB | CLOB | 不同长度的字符大型对象是一个不同长度的字符串。 字符串的最大长度取决于 DB2 平台和版本。 |
| 日期 | 日期 | 日期是一个 10 字节字符串。 |
| DBCLOB | DCLOB | 不同长度的双字节字符大型对象是唯一长度的图形双字节字符串。 字符串的最大长度取决于 DB2 平台和版本。 |
| 十进制 | 十进制 | 小数是打包的十进制数。 |
| Double | Double | 双精度为 8 字节双精度浮点数。 |
| 图形 | 图形 | 图形是仅限固定长度的 DBCS 字符串。 |
| int (整数) | 整数 | 整数是一个 4 字节二进制整数。 |
| 数值 | 数值 | 数字是打包的十进制数。 |
| 雷亚尔 | 雷亚尔 | 实数是 4 字节单精度浮点数。 |
| SmallInt | Smallint | 小整数是一个双字节二进制整数。 |
| 时间 | 时间 | 时间是一个 8 字节的时间字符串。 |
| 时间戳 | 时间戳 | 时间戳是表示日期、时间和微秒的 26 字节字符串。 |
| TinyInt | Smallint | 小整数是一个双字节二进制整数。 |
| VarBinary | Varbinary | 不同的二进制文件是可变长度的二进制字符串。 |
| VarChar | Varchar | 不同的字符是不同长度的 SBCS 或 MBCS 字符串。 |
| VarGraphic | Vargraphic | 不同图形是仅可变长度的 DBCS 字符串。 |
| VarWideChar | Vargraphic | 不同的图形是长度不一的 Unicode 字符串。 |
| VarWideGraphic | Vargraphic | 不同的图形是长度不一的 Unicode 字符串。 |
| WideChar | 图形 | 图形是固定长度的 Unicode 字符串。 |
| Xml | XML | 格式正确的 XML 文档字符串。 |
DB2 到 OLE DB 数据类型映射
下表介绍了 DB2 数据类型映射到 OLE DB 数据类型。
| OLE DB 数据类型 | DB2 数据类型 | 说明 |
|---|---|---|
| DBTYPE_I8 | Bigint | 大整数是一个 8 字节二进制整数。 |
| DBTYPE_Bytes | BINARY | 二进制文件是固定长度的二进制字符串 |
| DBTYPE_Bytes | BLOB | 二进制大型对象是用于存储非文本或二进制数据的可变长度字符串。 |
| 数据库类型_字符串 | Char | 字符是固定长度的 SBCS 或 MBCS 字符串。 |
| DBTYPE_WSTR | Char | Unicode 字符是固定长度的 MBCS 字符串。 |
| 数据库类型_字符串 | CLOB | 不同长度的字符大型对象是一个不同长度的字符串。 字符串的最大长度取决于 DB2 平台和版本。 |
| DBTYPE_DBDate | 日期 | 日期是一个 10 字节字符串。 |
| DBTYPE_Decimal | 十进制 | 小数是打包的十进制数。 |
| DBTYPE_R8 | Double | 双精度为 8 字节双精度浮点数。 |
| DBTYPE_R8 | 漂浮 | 浮点数是一个 8 字节双精度浮点数。 |
| DBTYPE_WSTR | 图形 | 图形是仅限固定长度的 DBCS 字符串。 |
| DBTYPE_I4 | 整数 | 整数是一个 4 字节二进制整数。 |
| 数据库类型_字符串 | Long Varchar | 不同的字符是不同长度的 SBCS 或 MBCS 字符串。 |
| DBTYPE_WSTR | Long Varchar | 不同长度的 Unicode 字符串。 |
| DBTYPE_WSTR | 长 Vargraphic | 不同图形是仅可变长度的 DBCS 字符串。 |
| DBTYPE_Numeric | 数值 | 数字是打包的十进制数。 |
| DBTYPE_I2 | Smallint | 小整数是一个双字节二进制整数。 |
| DBTYPE_R4 | 雷亚尔 | 实数是 4 字节单精度浮点数。 |
| DBTYPE_DBTime | 时间 | 时间是一个 8 字节的时间字符串。 |
| DBTYPE_DBTimestamp | 时间戳 | 时间戳是表示日期、时间和微秒的 26 字节字符串。 |
| DBTYPE_Bytes | Varbinary | 不同的二进制文件是可变长度的二进制字符串。 |
| 数据库类型_字符串 | Varchar | 不同的字符是不同长度的 SBCS 或 MBCS 字符串。 |
| DBTYPE_WSTR | Varchar | 不同长度的 Unicode 字符串。 |
| DBTYPE_WSTR | VarGraphic | 不同图形是仅可变长度的 DBCS 字符串。 |
使用 IDBSchemaRowset::GetRowset 的预定义架构行集检索 OLE DB 中的架构信息。 数据访问接口公开了PROVIDER_TYPES行集,以根据 IBM DB2 平台和版本指示 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 | ||
| 整数 | DBType_14 | 10 | ||
| Bigint | DBType_18 | 19 | ||
| Binary | DBType_Bytes | 255 | ||
| 雷亚尔 | DBType_R4 | 21 | ||
| 漂浮 | DBType_R8 | 53 | ||
| Double | DBType_R8 | 53 | ||
| 十进制 | DBType_Decimal | 31 | 0 | 31 |
| 图形 | DBType_WSTR | 127 | ||
| VarGraphic | DBType_WSTR | 16352 | ||
| Char | DBType_STR | 255 | ||
| Varchar | DBType_STR | 32,672 | ||
| Char | DBType_WSTR | 255 | ||
| Varchar | DBType_WSTR | 32,672 | ||
| 数值 | 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 | 32,704 | ||
| Long Varchar | DBType_WSTR | 32,704 | ||
| 长 Vargraphic | DBType_WSTR | 16352 | ||
| Varbinary | DBTypte_Bytes | 32,704 |
DB2 for IBM i
数据提供程序支持在连接到 DB2 for IBM i 时访问这些数据类型。
| DB2 Type_name | OLE DB data_type | Column_size | Minimum_scale | Maximum_scale |
|---|---|---|---|---|
| Binary | DBType_Bytes | 32765 | ||
| Smallint | DBType_12 | 5 | ||
| 整数 | DBType_14 | 10 | ||
| Bigint | DBType_18 | 19 | ||
| 雷亚尔 | DBType_R4 | 24 | ||
| 漂浮 | DBType_R8 | 53 | ||
| Double | DBType_R8 | 53 | ||
| 十进制 | DBType_Decimal | 63 | 0 | 31 |
| 图形 | DBType_WSTR | 16382 | ||
| VarGraphic | DBType_WSTR | 16369 | ||
| Char | DBType_STR | 32765 | ||
| Varchar | DBType_STR | 32739 | ||
| Char | DBType_WSTR | 32765 | ||
| Varchar | DBType_WSTR | 32739 | ||
| 数值 | 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 |
|---|---|---|---|---|
| Binary | DBType_Bytes | 254 | ||
| Smallint | DBType_12 | 5 | ||
| 整数 | DBType_14 | 10 | ||
| Bigint | DBType_18 | 19 | ||
| 雷亚尔 | DBType_R4 | 24 | ||
| 漂浮 | DBType_R8 | 53 | ||
| Double | DBType_R8 | 53 | ||
| 十进制 | DBType_Decimal | 31 | 0 | 31 |
| 图形 | DBType_WSTR | 127 | ||
| VarGraphic | DBType_WSTR | 16336 | ||
| Char | DBType_STR | 254 | ||
| Varchar | DBType_STR | 4000 | ||
| Char | DBType_WSTR | 254 | ||
| Varchar | DBType_WSTR | 4000 | ||
| CHAR() 用于 BIT 数据 | DBType_Bytes | 254 | ||
| Varchar() 用于 BIT 数据 | DBType_Bytes | 32,672 | ||
| 数值 | 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
使用 SQL Server Integration Services 导入和导出向导从 Microsoft SQL Server Management Studio 时,可以通过编辑 XML 映射文件来自定义默认数据转换。 XML 文件位于 C:\Program Files\Microsoft SQL Server\130\DTSMappingFiles (适用于 64 位)和 C:\Program Files (x86)\Microsoft SQL Server\130\DTSMappingFiles (对于 32 位)。
SQL Server 复制服务
SQL Server 复制可能会根据从 SQL Server 到 DB2 数据类型的默认映射错误地转换数据。 建议管理员和开发人员使用以下 SQL Server 系统存储过程查看和修改复制数据类型映射。
·sp_helpdatatypemap
·sp_getdefaultdatatypemapping
·sp_setdefaultdatatypemapping
有关详细信息,请参阅系统存储过程(Transact-SQL)。