Inquiridor
Campo description do usuário do AD

Pergunta
-
fiz esse select, mais não estou conseguindo colocar o campo description do usuario
select *
from openquery(adsi, '
select givenName,
sn,
sAMAccountName,
displayName,
mail,
telephoneNumber,
mobile,
physicalDeliveryOfficeName,
department,
division
from ''Nosso servidor AD''
where
objectCategory = ''Person''
and
objectClass = ''user''
AND ''userAccountControl:1.2.840.113556.1.4.803:''<>2
')
Todas as Respostas
-
Marco,
Por acaso você esta recebendo alguma mensagem de erro?
Este select esta sendo processado?
Qual é a dificuldade?
Veja se desta forma funciona:
select * from openquery(adsi, ' select givenName, sn, CAST(description AS VARCHAR(1024)) As Description, sAMAccountName, displayName, mail, telephoneNumber, mobile, physicalDeliveryOfficeName, department, division from ''Nosso servidor AD'' where objectCategory = ''Person'' and objectClass = ''user'' AND ''userAccountControl:1.2.840.113556.1.4.803:''<>2 ')
Veja se estes links podem te ajudar:
- https://stackoverflow.com/questions/12184670/using-openquery-to-connection-to-active-directory
- https://www.ryanjadams.com/2016/03/query-active-directory-sql-server/
-
https://blog.sqlauthority.com/2016/03/30/sql-server-query-active-directory-data-using-adsi-ldap-linked-server/
-
https://www.mssqltips.com/sqlservertip/2580/querying-active-directory-data-from-sql-server/
Ressalto que nem todos os dados contidos na base de dados do Active Directory você vai conseguir obter, devido a questões de segurança, formato de armazenamento e principalmente pelo provider ADSI não conseguir reconhecer, tratar e apresentar atributos multivalorados.
Em alguns cenário é mais indicado desenvolver uma aplicação nativa .NET implementando um código/função CLR que faça justamente esta ponte entre o SQL Server e o Active Directory.
Veja se este link te ajuda: https://docs.microsoft.com/pt-br/sql/relational-databases/user-defined-functions/create-clr-functions
Entrei em um post no Stack OverFlow, um exemplo que faz uso da Extended Stored Procedure XP_CMDShell em conjunto com o PowerShell, talvez possa ser uma alternativa dependendo do que você quer implementar.
Veja abaixo o exemplo:
https://stackoverflow.com/questions/14317624/how-get-multi-value-data-form-active-directory-using-sql exec xp_cmdshell 'powershell -command "get-aduser -filter * -properties SamAccountName, <MultiValue> | Select samaccountname, <MultiValue>"'
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP quarta-feira, 31 de julho de 2019 16:41 Atualização do código de exemplo e links de referência.
- Sugerido como Resposta Junior Galvão - MVPMVP domingo, 15 de setembro de 2019 12:45
-