Querying Active Directory from SQL Server 2005

后端 未结 4 1230
有刺的猬
有刺的猬 2020-12-03 08:51

How can I query Active Directory from SQL Server 2005?

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-03 09:25

    In order to overcome the maximum limit of 1000 records returned at a time from the Active Directory queries, you can use the function which I wrote below.

    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, ';(&(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, ';(&(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, ';(&(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, ';(&(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, ';(&(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, ';(&(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, ';(&(objectClass=User)(|(sAMAccountName=Y*)(sAMAccountName=Z*)) );sAMAccountName,givenName, sn, mail,userAccountControl;subtree')
    
    RETURN
    END
    GO
    

提交回复
热议问题