LDAP SSIS 在 ADO.NET 数据源上引发一般错误

Posted

技术标签:

【中文标题】LDAP SSIS 在 ADO.NET 数据源上引发一般错误【英文标题】:LDAP SSIS Throwing generic error on ADO.NET Datasource 【发布时间】:2012-02-08 00:32:02 【问题描述】:

使用 LDAP 运行我的 SSIS 时,我的 ADO 数据源上出现此错误:

[LDAP 源 1] 错误:组件“LDAP 源”(1) 无法 处理数据。 'ADsDSOObject' 失败,没有错误消息 可用,结果代码:-2147016669(0x80072023)。

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。这 组件“LDAP Source”(1) 上的 PrimeOutput 方法返回错误代码 0xC02090F5。管道时组件返回失败代码 引擎称为 PrimeOutput()。故障码的含义是 由组件定义,但错误是致命的,并且管道 停止执行。在此之前可能会发布错误消息 提供有关失败的更多信息。

我在我的连接管理器中使用用于 Microsoft 目录服务的 OLE DB 提供程序将 ADO 连接设置为 ADO.NET 连接。示例如下:

我正在使用 ADO.NET 数据源来使用如下所示的 LDAP 查询来查询我的 AD:

SELECT sAMAccountName,cn FROM 'LDAP://DC=domain,DC=net' WHERE sAMAccountType = 805306368

在运行我的数据预览时,它可以很好地拉取预览。但是在运行包时,它不会通过数据源而不抛出上述错误。注意:我还尝试在 ADO.NET 连接上将 ADSI 标志更改为 1。

在将 ADO.NET 连接与 Microsoft Directory Services Provider 的 OLE DB 提供程序一起使用之前,有没有其他人看到过此错误?

【问题讨论】:

我收到有关与 ADO.NET 提供程序和 AD 类型不兼容的数据类型的警告,但我能够从本地 AD 中恢复 sAMAccountName 和 cn。我会到处玩,看看能不能找到什么, 您不会尝试在您的选择列表中读取类似 memberof 的内容,对吧?以上是完整的列列表吗?尝试删除和读取 ado 网络源?将选择列表缩减为 1 列,然后慢慢重新添加它们,看看您是否能找出导致失败的原因。在源的高级编辑器中,查看您的列 DataType,它们都是 unicode 流 (DT_NTEXT) 在尝试了所有这些选项后,我仍然遇到同样的错误。是否必须启用 AD 端的某些功能?我看不到它是权限错误,因为当我在数据源上单击“预览”时,它会提取值。 【参考方案1】:

看看我对Error : Cannot fetch a row from OLE DB provider "ADsDSOObject" for linked server "ADSI" 的回答,看看是否有帮助。这似乎总是对我有用。

此外,您可能需要考虑使用 ntdsutil.exe 更改 Active Directory 中的 MaxPageSize。详情请见How to view and set LDAP policy in Active Directory by using Ntdsutil.exe。

【讨论】:

【参考方案2】:

而不是使用 ADO.NET 提供程序作为使用 OLE DB 的 SSIS 包的源。它将执行相同的操作,而不会出现您可能遇到的所有错误。我已经解决了使用 ADO.NET 时遇到的所有错误,因为我认为它适合用于我的 SQL Server 数据源。不幸的是,无论我研究了多少个论坛,我都只是删除了 ADO.NET 并使用完全相同的连接和设置将其替换为 OLE DB,并且总是有一个干净的“Success”执行。

【讨论】:

以上是关于LDAP SSIS 在 ADO.NET 数据源上引发一般错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ADO.NET 源 SSIS 中传递参数

将动态表传递给 SSIS 中的 ADO.NET 目标

SSIS 将 ADO Net 源聚合到 SQL Server 数据库中

如何将参数传递给 ssis 中的 ado.net 源?

ssis

SSIS MySQL ADO.net SQL 任务输入和输出