[SQL] SQL 서버 2005에서 Active Directory를 쿼리
SQLSQL 서버 2005에서 Active Directory를 쿼리
어떻게 SQL 서버 2005에서 Active Directory를 쿼리 할 수 있습니다?
해결법
-
==============================
1.여기 아주 일반적인 질문하지만, 몇 가지 포인터입니다.
여기 아주 일반적인 질문하지만, 몇 가지 포인터입니다.
당신은 연결된 서버는이 같은 점 ADSI에 (Active Directory 서비스 인터페이스) 뭔가를 할 것이라는 SQL Server에서 생성해야합니다.
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource'
그럼 당신은 쿼리의 다음과 같은 종류를 사용할 수 있습니다.
SELECT * FROM OPENQUERY(ADSI, 'SELECT sAMAccountName FROM ''LDAP://DC=MyDC,DC=com,DC=uk'' WHERE objectCategory = ''Person'' AND objectClass = ''user'')
적절 // 라인 (자세한 내용은 AD 관리자에게 문의) 및 OpenQuery를을 사용하여 분산 애드혹 쿼리가 SQL 서버에 기본적으로 사용되는 것을 알고 : 당신은 LDAP를 설정해야합니다. 당신은 꽤 쉽게해야하지만 위의 일단 특정 변화를 Google에.
-
==============================
2.예.
예.
연결된 서버 :
EXEC master.dbo.sp_addlinkedserver @server = N'ADSI', @srvproduct=N'Active Directory Services', @provider=N'ADsDSOObject', @datasrc=N'Servername.domain.com'
질문:
select * from openquery ( ADSI,'SELECT name FROM ''LDAP://Servername.domain.com'' WHERE objectCategory = ''Person'' AND objectClass = ''user'' ')
Google에서 서버와 LDAP를 링크 검색하는 경우 사례가 많이 있습니다. 나는 LDAP 아주와 함께 작동하도록 복잡 할 수있는이 때문에 말한다.
-
==============================
3.는 Active Directory 쿼리에서 한 번에 반환 1000 개 레코드의 최대 한계를 극복하기 위해, 당신은 내가 아래에 쓴 기능을 사용할 수 있습니다.
는 Active Directory 쿼리에서 한 번에 반환 1000 개 레코드의 최대 한계를 극복하기 위해, 당신은 내가 아래에 쓴 기능을 사용할 수 있습니다.
CREATE FUNCTION [dbo].[tf_GetAllUsersFromActiveDirectory] () RETURNS @USERS TABLE ( sAMAccountName VARCHAR(25) PRIMARY KEY CLUSTERED , givenName VARCHAR(200) , SN VARCHAR(200) , userAccountControl VARBINARY(8) , mail VARCHAR(200) ) AS BEGIN INSERT INTO @Users SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=A*)(sAMAccountName=B*)(sAMAccountName=C*)(sAMAccountName=D*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=E*)(sAMAccountName=F*)(sAMAccountName=G*)(sAMAccountName=H*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=I*)(sAMAccountName=J*)(sAMAccountName=K*)(sAMAccountName=L*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=M*)(sAMAccountName=N*)(sAMAccountName=O*)(sAMAccountName=P*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=Q*)(sAMAccountName=R*)(sAMAccountName=S*)(sAMAccountName=T*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=U*)(sAMAccountName=V*)(sAMAccountName=W*)(sAMAccountName=X*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') UNION ALL SELECT sAMAccountName,givenName, sn, userAccountControl,mail FROM OpenQuery(ADSI, '<LDAP://YourDomain.com:389>;(&(objectClass=User)(|(sAMAccountName=Y*)(sAMAccountName=Z*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree') RETURN END GO
-
==============================
4.그냥 참고; 링크 사용을 제거하는
그냥 참고; 링크 사용을 제거하는
exec sp_dropserver 'ADSI';
from https://stackoverflow.com/questions/1251038/querying-active-directory-from-sql-server-2005 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 최대 절전 모드 문제 : 외래 키 컬럼의 수가 같아야 기본 키를 참조로 (0) | 2020.06.10 |
---|---|
[SQL] SQL Server 데이터베이스에서 DataTable을 채우기 (0) | 2020.06.10 |
[SQL] 또 다른 열을 기준으로 최대 열 값 그룹과 행 선택 (0) | 2020.06.10 |
[SQL] MS-SQL 2000에서 where 절에 별칭 컬럼을 사용하여 (0) | 2020.06.10 |
[SQL] 오라클 <>,! =, ^ = 운영 (0) | 2020.06.10 |