C# 使用SSIS-源查询active directory

C# 使用SSIS-源查询active directory,c#,sql-server,ssis,ldap,C#,Sql Server,Ssis,Ldap,我正在使用SSI访问ldap服务器。玩了一会儿之后,我设法创建了一个OLE-DB连接(不能使用ADO.NET连接)。关于连接本身(在连接管理器中)最关键的部分是我省略了“服务器”,因此该字段是空白的,因为服务器可以切换。提供程序是用于OleDb的.Net提供程序\OLE DB提供程序,用于Microsoft目录服务 到目前为止,它使用以下命令,然后在源中使用: SELECT extensionAttribute2 FROM 'LDAP://Mydonaimname' WHERE objectCl

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

到目前为止,它使用以下命令,然后在源中使用:

SELECT extensionAttribute2 FROM 'LDAP://Mydonaimname' WHERE objectClass='User'
现在是奇怪的部分,也是我的问题:

当我使用ADO NET源代码时,上面的语句与所提到的连接一起工作,但我得到一个警告,因为extensionAttribute2的类型为System.object,ADO NET源代码不支持该类型。 不过预览是正确的

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

  • 有没有办法让OLE DB源代码正常工作
  • 如果没有,那么有没有办法让ADO NET源代码中的警告消失

  • 正如您所写,我使用了几个来源来获取数据(我无法正确访问AD):

    -使用第一个示例

    -给我举例说明我能得到什么

    因此,使用第一个示例:

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

    2) 创建变量var1作为对象

    3) 然后拖动
    执行SQL任务
    。打开编辑器:为
    结果集
    选择
    完整结果集
    直接输入
    SQLSourceType
    ,将
    旁路准备
    设置为
    ;选择第一步创建的
    连接
    ;给出了
    SqlStatement

    从objectClass='User'所在的'LDAP://eurolith dc'中选择ExtensionAttribute2

    因为我没有任何
    从'LDAP://eurolith dc'中选择cn,其中objectClass='User'

    另外,在
    结果集
    选项卡中添加了在步骤2中创建的变量,并设置
    结果名=0

    3) 创建了另一个变量
    变量
    作为数据类型对象,稍后将用于查看

    4) 为了显示结果,我使用了
    Foreach循环容器
    脚本任务
    。在
    Foreach循环容器中
    我将
    枚举器
    更改为
    Foreach ADO枚举器
    ,并选择
    ADO对象源变量
    作为
    var1
    。还将变量映射到新创建的
    变量
    索引=0
    。在这个容器中,我拖动了
    脚本任务
    。在编辑器中,我选择了
    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
    也有一些空值,这就是为什么会出现错误。尝试使用
    cn
    进行检查,您将看到。

    到目前为止还无法进行测试,因此会问:您是否必须将结果放入变量中?或者是否有可能在数据流本身的下一步中直接使用结果?到哪个变量。如果第一个,当你读广告的时候,那么是的。如果是第二个,我只是用来显示它,那么就没有必要了。我已经成功地在一个脚本中用于查询广告