FIX: 错误消息时使用的 DB2 的 OLE DB 提供程序运行 SQL 语句:"SQLSTATE 22007,SQLCODE-181"

文章翻译 文章翻译
文章编号: 924599 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

请考虑以下情形。通过使用 Microsoft OLE DB 提供程序用于 DB2 运行 SQL 语句。在 SQL 语句将 Microsoft SQL Server 日期时间 参数传递到 IBM DB2 数据库列。在 IBM DB2 数据库列使用 IBM DB2 DATE 数据类型。在这种情况下,您可能会收到以下错误消息:
SQLSTATE: 22007 SQLCODE:-181
例如对于下面的 SQL 语句将 SQL Server 日期时间 参数传递到 IBM DB2 数据库列。
declare @var1 datetime
set @var1 = '2006-09-27 00:00:00.000'
SELECT COL1, COL2, COL3
FROM IBMDB2.TESTDATA.USER1.TABLE1
WHERE COL2 = @var1
在此的示例如果 COL2 列使用 IBM DB2 DATE 数据类型,会出现此问题。

原因

在运行时,OLE DB 提供程序用于 DB2 不知道正确的 IBM DB2 数据类型 SQL Server 日期时间 参数传送到 IBM DB2 数据库列。因此,OLE DB 提供程序 DB2 的 OLE DB 提供程序用于 DB2 传递到 IBM DB2 数据库的值中包括日期信息和时间信息。对于 IBM DB2 DATE 数据类型无效时间信息。因此,您收到"症状"部分中提到的错误消息。

解决方案

Microsoft 主机集成服务器 2006

若要解决此问题,获得最新的 service pack,主机集成服务器 2006 年。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
979497如何获取最新的主机集成服务器 2006年服务包

Microsoft 主机集成服务器 2004

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

文件信息

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间项中的 时区 选项卡。
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台SP 要求
Db2oledb.dll6.0.2048.0488,9602006 年十一月 3 日17: 31x86sp1
Db2oledb.h不适用24,5792006 年十一月 3 日17: 36不适用sp1
Ddmstr.dll6.0.2048.044,0322006 年十一月 3 日17: 31x86sp1
Drdaresync.exe6.0.2048.0337,4082006 年十一月 3 日17: 32x86sp1
Microsoft.hostintegration.dataaccesslibrary.dll6.0.2048.086,0162006 年十一月 3 日17: 31x86sp1
Microsoft.hostintegration.dataaccesstool.exe6.0.2048.02,703,3602006 年十一月 3 日17: 32x86sp1
Microsoft.hostintegration.msdb2client.dll6.0.2048.0114,6882006 年十一月 3 日17: 31x86sp1
Mseidb2c.dll6.0.2048.071,6802006 年十一月 3 日17: 31x86sp1
Mseidb2d.dll6.0.2048.0435,2002006 年十一月 3 日17: 31x86sp1
Mseidrda.dll6.0.2048.0695,8082006 年十一月 3 日17: 32x86sp1
注意由于存在文件依赖性包含这些文件的最新修补程序还可能包含其他文件。

Microsoft OLE DB 提供程序用于 DB2 版本 1.0

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

文件信息

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间项中的 时区 选项卡。
(x 86) 32 位版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台SP 要求
Db2oledb.dll6.0.2048.0488,9602006 年十一月 3 日17: 31x86sp1
Db2oledb.h不适用24,5792006 年十一月 3 日17: 36不适用sp1
Ddmstr.dll6.0.2048.044,0322006 年十一月 3 日17: 31x86sp1
Drdaresync.exe6.0.2048.0337,4082006 年十一月 3 日17: 32x86sp1
Microsoft.hostintegration.dataaccesslibrary.dll6.0.2048.086,0162006 年十一月 3 日17: 31x86sp1
Microsoft.hostintegration.dataaccesstool.exe6.0.2048.02,703,3602006 年十一月 3 日17: 32x86sp1
Microsoft.hostintegration.msdb2client.dll6.0.2048.0114,6882006 年十一月 3 日17: 31x86sp1
Mseidb2c.dll6.0.2048.071,6802006 年十一月 3 日17: 31x86sp1
Mseidb2d.dll6.0.2048.0435,2002006 年十一月 3 日17: 31x86sp1
Mseidrda.dll6.0.2048.0695,8082006 年十一月 3 日17: 32x86sp1
64 位 (x64) 版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台服务分支
Db2oledb.dll7.0.2535.0758,5442006 年十一月 7 日12: 34x64不适用
Microsoft.hostintegration.dataaccesslibrary.dll7.0.2535.02,550,6162006 年十一月 7 日12: 34x64不适用
Microsoft.hostintegration.dataaccesstool.exe7.0.2535.0613,2002006 年十一月 7 日12: 34x64不适用
Mseidrda.dll7.0.2535.01,355,5362006 年十一月 7 日12: 34x64不适用
Snanls.dll7.0.2535.0128,7762006 年十一月 7 日12: 34x64不适用
Db2oledb.dll7.0.2535.0516,8802006 年十一月 7 日12: 34x86SYSWOW
Mseidrda.dll7.0.2535.0781,0722006 年十一月 7 日12: 34x86SYSWOW
Snanls.dll7.0.2535.0105,2242006 年十一月 7 日12: 34x86SYSWOW
注意由于存在文件依赖性包含这些文件的最新修补程序还可能包含其他文件。

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

此修补程序增加了新的连接字符串属性的支持。通过新的连接字符串属性可以将 SQL Server 日期时间 参数作为 IBM DB2 DATE 数据类型传递到 IBM DB2 数据库。OLE DB 提供程序用于 DB2 删除 SQL Server 日期时间 参数的值中的时间信息。因此,OLE DB 提供程序用于 DB2 将传递到 IBM DB2 数据库的只是其日期信息。

新的连接字符串属性具有以下定义:
为日期的日期时间 = Value
在 $ 此连接字符串属性中,中,您可以定义 ValueTRUEFALSE。如果添加了 DateTime 为日期 = TRUE 到连接字符串的 OLE DB 提供程序用于 DB2 的语句将转换为 IBM DB2 DATE 数据类型 SQL Server 日期时间 参数。然后,OLE DB 提供程序用于 DB2 将值传递到 IBM DB2 数据库中。

如果添加了 DateTime 为日期为 FALSE 到连接字符串的 OLE DB 提供程序用于 DB2 的语句将 SQL Server 日期时间 参数传递到 IBM DB2 数据库根据您在 SQL 语句中指定。在这种情况下 OLE DB 提供程序用于 DB2 到 IBM DB2 数据库传递其日期信息和时间信息。

注意如果您没有添加到连接字符串的 日期为 DateTime 属性,则此行为是默认行为。

下面的连接字符串示例演示如何使用 DateTime 为日期 属性。
; Everything after this line is an OLE DB initialization string.
Provider=DB2OLEDB;Password=<Password>;Persist Security Info=True;User ID=<Username>;Initial Catalog=S105FRDM;Defer Prepare=False;Derive Parameters=False;Network Transport Library=TCP;Host CCSID=37;PC Code Page=1252;Network Address=<Address>;Network Port=446;Package Collection=DB2USER;Default Schema=DB2USER;Default Qualifier=DB2USER;DBMS Platform=DB2/AS400;Process Binary as Character=False;Connection Pooling=True;Units of Work=RUW;DateTime As Date=TRUE
要点 后您应用此修补程序并将其添加该 DateTime 为日期 = TRUE 语句在连接字符串中,您可能会收到以下错误消息:
SQLSTATE: 22007 SQLCODE:-
如果 IBM DB2 数据库中的列使用 IBM DB2 TIMESTAMP 数据类型,则会发生此问题。因为 IBM DB2 数据库希望接收其日期信息和时间信息,查询传递到使用 IBM DB2 TIMESTAMP 数据类型的 IBM DB2 数据库列时,会出现此问题。在 DateTime 为日期 = TRUE 语句使 OLE DB 提供程序用于 DB2 以删除 SQL Server 日期时间 参数的值中的时间信息。因此,查询传递给使用 IBM DB2 TIMESTAMP 数据类型的 IBM DB2 数据库列时,数据是无效。

如果您必须查询使用 IBM DB2 DATE 数据类型和 IBM DB2 TIMESTAMP 数据类型的 IBM DB2 表,必须使用配置为使用正确的属性的多个连接字符串。然后,您可以成功地查询各种 IBM DB2 的数据类型。

有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明
本文讨论了在第三方产品是由独立于 Microsoft 的公司生产的。Microsoft 使不保证或暗示或其他有关性能或可靠性,这些产品的方式。

属性

文章编号: 924599 - 最后修改: 2010年2月4日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft Host Integration Server 2006 Enterprise Edition
  • Microsoft Host Integration Server 2006
  • Microsoft Host Integration Server 2004 Enterprise Edition
  • Microsoft Host Integration Server 2004 Standard Edition
  • Microsoft OLE DB Provider for DB2
关键字:?
kbmt kbautohotfix kbdb2oledb kbhis2004 kbfix kbbug kbhotfixserver kbqfe kbpubtypekc KB924599 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 924599
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com