如何從SQL Server 2005查詢Active Directory?從SQL Server 2005查詢Active Directory
7
A
回答
10
相當普遍的問題,但這裏有一些指針。
您需要在SQL Server上創建指向ADSI(活動目錄服務接口)的鏈接服務器才能做到這一點。
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'')
你需要設置LDAP://線適當地(索要詳細信息,請AD管理員),並意識到分佈式即席使用OPENQUERY默認情況下在SQL Server中禁用查詢。一旦你有了上面的內容,但對於任何特定的變體,Google都應該很容易。
5
是的。
鏈接服務器:
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''
')
有很多的例子,如果你搜索鏈接服務器和LDPA谷歌。 我這樣說是因爲LDAP可能相當複雜。
3
爲了克服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
3
相關問題
- 1. Active Directory組與SQL Server 2005
- 2. 從SQL Server訪問Active Directory
- 3. 用「SQL」查詢Active Directory?
- 4. 查詢Active Directory
- 5. 在SQL Server 2005(LDAP)中從Active Directory獲取描述字段
- 6. SQL Server 2005查詢
- 7. Parallelise Active Directory查詢
- 8. SQL查詢在SQL Server 2005
- 9. 使用SQL Server 2005通過LDAP訪問Active Directory角色成員
- 10. 使用PowerShell查詢Active Directory
- 11. SQL Server 2005的XML查詢
- 12. SQL Server 2005子查詢
- 13. 在SQL Server DISTINCT 2005查詢
- 14. SQL Server 2005性能查詢
- 15. 樞軸查詢 - SQL Server 2005
- 16. SQL Server 2005查詢幫助
- 17. 查詢SQL Server 2005中
- 18. SQL Server 2005和.NET查詢
- 19. SQL Server 2005求和查詢
- 20. 查詢SQL Server 2005中
- 21. SQL Server 2005 - 優先查詢
- 22. SQL Server 2005,SELECT DISTINCT查詢
- 23. SQL Server 2005 XML查詢
- 24. 從SQL Server 2005訪問Passthrough查詢
- 25. sql server 2005從'查詢'更新
- 26. 在Active Directory中查詢PrincipalContext
- 27. 使用VBScript查詢Active Directory
- 28. 從Active Directory中查詢SQL Server 2008 R2的電子郵件地址?
- 29. 從SQL Server 2008端查詢SQL Server 2005數據庫
- 30. Active Directory組添加到SQL Server
到AD的鏈接是隻讀還是可以通過此路由插入呢? – Kristen 2009-11-11 19:28:24
不,它只是選擇,但您可以使用ADSI COM對象模型創建用戶。這裏有一個介紹http://en.csharp-online.net/User_Management_with_Active_Directory – 2009-11-12 17:15:11