gpt4 book ai didi

c# - 使用 SSIS - 查询事件目录的来源

转载 作者:行者123 更新时间:2023-11-30 16:57:22 27 4
gpt4 key购买 nike

我正在使用 SSIS 访问 ldap 服务器。玩了一会儿之后,我设法创建了一个 OLE-DB- 连接(不能使用 ADO.NET 连接)。关于连接本身(在连接管理器中)最关键的部分是我省略了“服务器”,因此该字段为空白,因为服务器可以切换。该提供程序是 .Net Providers for OleDb\OLE DB Provider for Microsoft Directory Services。

到目前为止,在源代码中使用以下命令是可行的:

SELECT extensionAttribute2 FROM 'LDAP://Mydonaimname' WHERE objectClass='User'

现在是奇怪的部分,也是我的问题:

当我使用 ADO NET Source 时,上面的语句与提到的连接有效但我收到警告,因为 extensionAttribute2 是 ADO NET Source 不支持的 System.object 类型。不过预览是正确的。

当我尝试使用相同的语句和 OLE DB 源连接时,当我尝试查看预览时,我得到了一个 OLE DB 错误(很遗憾,错误消息中没有给出有用的描述,只有错误代码为 0x0 的一般错误)。尽管环顾四周并进行了尝试,但我没有在那里找到任何东西,所以我的问题是:

  1. 有什么方法可以让 OLE DB 源正常工作吗?
  2. 如果没有,那么有没有办法让 ADO NET 源代码中的警告消失?

最佳答案

我已经使用了多个来源来尝试获取您所写的数据(我无法直接访问 AD):

Processing Active Directory Information in SSIS - 使用第一个例子

Universal Connector Integration Details - 给我举例说明我能得到什么

所以使用第一个例子:

1) 我已经创建了 OLE DB 连接管理器。选择提供程序 Native OLE DB/OLE DB Provider for Microsoft Directory Services 并添加我的服务器名称;

2) 创建变量var1作为对象;

3) 然后拖动Execute SQL task。打开编辑器:为ResultSet选择了Full result set,为SQLSourceType选择了Direct input,设置了BypassPrepare;选择在第一步中创建的 Connection;给出了 SqlStatement:

SELECT ExtensionAttribute2 FROM 'LDAP://eurolith-dc' WHERE objectClass='User'

也用这个测试过,因为我没有
SELECT cn FROM 'LDAP://eurolith-dc' WHERE objectClass='User'

还在 Result Set 选项卡中添加了在步骤 2 中创建的变量并设置 Result Name = 0

3) 创建了另一个变量Variable作为数据类型Object,稍后用于查看;

4) 为了显示结果,我使用了 Foreach Loop ContainerScript task。在 Foreach Loop Container 中,我将 Enumerator 更改为 Foreach ADO Enumerator 并选择 ADO object source variable 作为 变量 1。还将变量映射到新创建的 VariableIndex=0。在这个容器中,我拖动了 Script task。在编辑器中,我选择了 ReadOnlyVariables=User::Variable。打开脚本并粘贴此代码:

    String localVar = Convert.ToString(Dts.Variables["User::Variable"].Value);
if (!String.IsNullOrEmpty(localVar))
{
MessageBox.Show(Dts.Variables["User::Variable"].Value.ToString());
}

我正在检查变量是否为 NULL,因为我想我在 ExtensionAttribute2 中没有任何信息。所以我用cn查了一下。

这个例子对我有用。

而且我猜想,您的 ExtensionAttribute2 也有一些 NULL 值,这就是您出错的原因。尝试使用 cn 检查,您会看到。

关于c# - 使用 SSIS - 查询事件目录的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com