修复:在 SQL Server 2008 Integration Services 中的 OLE DB 源编辑器中单击“列”选项卡时出现错误消息:“数据流 任务 [OLE DB 源 [1]] 出错:SSIS 错误代码 DTS_E_OLEDBERROR”

Microsoft 将 Microsoft SQL Server 2008 修复程序作为一个可下载的文件分发。 由于修补程序是累积的,因此每个新版本都包含之前 SQL Server 2008 修补程序版本中包含的所有修补程序和安全修补程序。

症状

在 Business Intelligence Development Studio (BIDS) 中创建或编辑 Microsoft SQL Server 2008 Integration Services (SSIS) 包。 你在数据流任务中编辑 OLE DB 源。 单击 “列 ”选项卡时,会收到以下错误消息:

注意

标题: Microsoft Visual Studio


数据流 任务 [OLE DB 源 [1]] 出错:SSIS 错误代码 DTS_E_OLEDBERROR。 发生 OLE DB 错误。 错误代码:0x80040E21。


其他信息:

HRESULT 异常:0xC0202009 (Microsoft.SqlServer.DTSPipelineWrap)

注意 DTS_E_OLEDBERROR 错误代码有许多原因。 本文仅介绍一个具有特定原因的罕见问题。 要确保遇到此问题,请参阅“更多信息”部分以获取故障排除方法。

注意:SQL Server 2005 中不会出现此问题。

原因

在 SQL Server 2008 SSIS 中,特定检查可确定 OLE DB 提供程序使用的标识符是否区分大小写。 此检查允许 SSIS 在 SSIS 列出对象名称、表名和列名时遵循 OLE DB 提供程序配置定义的大小写区别。 此检查通过实现名为 DBPROP_IDENTIFIERCASE 的 OLE DB 属性来执行。 但是,并非所有 OLE DB 提供程序都支持和实现此属性。 如果未实现该属性,则 BIDS 中可能会出现错误。

解决方法

累积更新信息

SQL Server 2008 的发行版本

重要说明 如果您的计算机运行的是 SQL Server 2008 发行版,则必须安装此累积更新程序包。

此问题的修补程序已在累积更新 5 中首次发布。 有关如何获取 SQL Server 2008 的此累积更新程序包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

969531 累积更新包 5 for SQL Server 2008注意 由于版本是累积的,因此每个新的修补程序版本都包含之前 SQL Server 2008 修补程序版本中包含的所有修补程序和所有安全修补程序。 建议应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

956909 在 SQL Server 2008 发布之后发布的 SQL Server 2008 内部版本

SQL Server 2008 Service Pack 1

重要说明 如果计算机运行的是 SQL Server 2008 Service Pack 1,则必须安装此累积更新程序包。

此问题的修补程序稍后也在 SQL Server 2008 Service Pack 1 的累积更新 3 中发布。 有关此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

971491 SQL Server 2008 Service Pack 1 累积更新包 3 注意 由于版本是累积的,因此每个新的修复版本都包含之前 SQL Server 2008 修复版本中包含的所有修补程序和所有安全修补程序。 Microsoft 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

970365 在 SQL Server 2008 Service Pack 1 发布之后发布的 SQL Server 2008 内部版本
Microsoft SQL Server 2008 修补程序是为特定的 SQL Server Service Pack 创建的。 必须将 SQL Server 2008 Service Pack 1 修补程序应用于 SQL Server 2008 Service Pack 1 的安装。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个 SQL Server Service Pack 中。

此修补程序更改了 SSIS 中 OLE DB 源代码的行为,以请求 DBPROP_IDENTIFIERCASE 属性。 应用此修补程序后,SSIS 将忽略 DBPROP_IDENTIFIERCASE 属性的失败。 相反,SSIS 使用默认值作为标识符。 应用此修补程序后,如果 OLE DB 提供程序未实现该属性,则标识符默认区分大小写。

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

详细信息

疑难解答

要确保遇到此问题,请按照下列步骤操作:

  1. 下载并安装 OLE DB 行集查看器示例工具。 有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
    https://msdn.microsoft.com/library/ms714336(vs.85).aspx
  2. 启动行集查看器。
  3. 在 “文件 ”菜单上,单击 “完全连接”。
  4. 选择提供程序、源、登录名和其他连接字符串属性。 然后单击“ 确定”。
  5. 成功完成连接后,在 “数据源 ”菜单上,指向“ IDBPProperties”,然后单击“ GetProperties”。
  6. 在 PropSet 列表中,选择 DBPROPSET_DATASOURCEINFO。

如果 DBPROP_IDENTIFIERCASE 属性未列为可用属性,或者 DBPROP_IDENTIFIERCASE 属性旁边具有绿色问号,则提供商不支持此属性。 在这种情况下,您将遇到“症状”部分描述的问题。

重现问题的步骤

  1. 在 SQL Server 2008 BIDS 中,创建新的 SSIS 包。
  2. 将数据流任务添加到包。
  3. 在数据流任务中添加 OLE DB 源组件。
  4. 将连接管理器配置为使用不支持 DBPROP_IDENTIFIERCASE 属性的 OLE DB 提供程序。
  5. 选择表、视图或 SQL 命令,然后提供所需的对象名称或 SQL 命令。
  6. 在左窗格中,单击“ 列 ”选项卡。

您会收到 “症状” 部分所述的错误消息。

参考资料

有关 DBPROP_IDENTIFIERCASE 属性的详细信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:

https://msdn.microsoft.com/library/ms713637(vs.85).aspx 有关用于查询属性值的 IDBProperties::GetProperties 方法的详细信息,请访问以下 Microsoft 网站:

https://msdn.microsoft.com/library/ms714344(vs.85).aspx有关 SQL Server 增量服务模型的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 可从 SQL Server 团队获取增量服务模型以提供可以解决所报告问题的修补程序

有关 SQL Server 更新的命名架构的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499 Microsoft SQL Server 软件更新包的新命名模式有关软件更新术语的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述Microsoft软件更新的标准术语说明