Jor*_*ren 2 sql-server ssis sql-server-2005 active-directory
我可以设置一个使用目录服务 OLE 提供程序并指向我们的域控制器之一的连接管理器。然后,在“数据流”区域中,创建一个 OLE DB 源并将“数据访问模式”设置为“SQL 命令”。
然后,我使用此查询从 Active Directory 中提取数据:
Select employeeid, sAMaccountName
From 'LDAP://MyCompany.com'
Where objectClass = 'user'
and objectClass = 'Person'
and objectClass <> 'Computer'
Run Code Online (Sandbox Code Playgroud)
如果我解析查询,它会说它解析正确。如果我打开查询生成器,它会给我这个错误。
FROM 子句中的错误:“WHERE”附近。无法解析查询文本。
然后单击“确定”,它会打开查询生成器,我可以在其中成功运行查询并从 AD 获取结果。但是,当我尝试单击“确定”应用更改或进入“列”视图时,出现以下错误:
数据流任务 [OLE DB 源 1 [941]] 出错:发生 OLE DB 错误。错误代码:0x80040E21。
其他信息:HRESULT 异常:0xC0202009 (Microsoft.SqlServer.DTSPipelineWrap)
我还尝试使用“来自变量的 SQL 命令”访问模式设置数据库源。我设置了一个字符串变量,其值为查询...但这只是给了我同样的错误。
由于该错误非常普遍,因此我似乎无法找到实际错误的描述。
有谁知道如何成功使用 Microsoft Direcotry 服务的 OLE DB 提供程序?和/或有人知道在 SSIS 内部执行此操作的更好方法吗?
假设您将链接服务器(您的 Active Directory OLE DB 提供程序)命名为“ADSI”,这基本上就是您所需要的:
SELECT samAccountName,
employeeID
FROM OPENQUERY(ADSI,
'SELECT samAccountName, employeeID
FROM ''LDAP://MyCompany.com''
WHERE objectClass=''Person''
AND objectClass = ''User''
AND NOT objectClass = ''Computer''')
Run Code Online (Sandbox Code Playgroud)