Step1: Get the Servers
Run the following command to get the list of all linked servers.
sp_linkedservers
Note: sp_helpserver can also be used to list the available servers
Step 2: Add the server you want to connect to [This is important, because most people mess up here]
To add a linked server we will use the following command
sp_addlinkedserver
EXEC sp_addlinkedserver
@server=N'S1_instance1',
@srvproduct=N'',
@provider=N'SQLNCLI',
@datasrc=N'S1\instance1';
Step 3: Query the Active Directory
DECLARE @Application TABLE (cn varchar(50));
DECLARE @ApplicationCN varchar(50);
DECLARE @SQLString nvarchar(MAX);
DECLARE @ApplicationName varchar(20)= 'yy' -- name of the container
DECLARE @Role varchar(20) = 'xxx'
DECLARE @Domain nvarchar(20) = 'a.com' -- if this is a.com
SET @SQLString='SELECT cn FROM OPENQUERY(ADSI,''SELECT cn FROM ''''LDAP://' +@Domain +''''' WHERE objectClass=''''msDS-AzApplication'''' AND msDS-AzApplicationName='''''+@ApplicationName+''''''')';
PRINT (@SQLString)
INSERT @Application EXEC(@SQLString);
SET @ApplicationCN=(SELECT TOP 1 cn FROM @Application);
SET @SQLString='SELECT * FROM OPENQUERY(ADSI,''SELECT userPrincipalName,givenName,sn,samAccountName, cn, company, department, Name, Mail,telephoneNumber,mobile, l, physicalDeliveryOfficeName, postalCode, streetAddress, facsimileTelephoneNumber, distinguishedName, info FROM ''''LDAP://' +@Domain +''''' WHERE msDS-MembersForAzRoleBL=''''CN='+@Role+',CN=AzRoleObjectContainer-'+@ApplicationCN+',CN='+@ApplicationCN+ ',CN=US,OU=EDFrameworkAuthorizationStores,DC=a,DC=com'''''') order by 1'
EXEC (@SQLString);
--Let me know in case you face any problem.
thanks,
ReplyDeletegood for also WIN8??
active directory query