Erro consulta Linked Server do Active Directory: consulta acima de 901 linhas
Erro: the ole db provider adsdsoobject has not been registered
Mensagem 7330, Nível 16, Estado 2, Linha 2
Não é possível buscar uma linha no provedor do OLE DB “ADSDSOObject” para o servidor vinculado “ADSI”.Retrieve >901 rows from SQL Server 2008 linked server to Active Directory
Esse erro ocorre por que o linked server com Active Directory suportar um retorno de até 901 linhas, quando a consulta é feita no AD e retorna mais que isso gera esse erro. Para resolver esse problema tem duas sainda:
1ª Fazer uma select limitando a quantidade de registro, com union
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
-- 0º Traz todos os usuarios do AD select distinct * into #AD_Usuarios from ( select TOP 901 * from openquery(ADSI, ' SELECT dNSHostname, NAME, homeDrive, userPrincipalName, givenName, sn, sAMAccountName, displayName, mail, telephoneNumber, mobile, physicalDeliveryOfficeName, department, division FROM ''LDAP: / / NomeDoAd'' WHERE objectCategory = ''Person'' AND objectClass = ''USER'' and sAMAccountName < ''m'' ') union select TOP 901 * from openquery(ADSI, ' SELECT dNSHostname, NAME, homeDrive, userPrincipalName, givenName, sn, sAMAccountName, displayName, mail, telephoneNumber, mobile, physicalDeliveryOfficeName, department, division FROM ''LDAP: / / NomeDoAd'' WHERE objectCategory = ''Person'' AND objectClass = ''USER'' and sAMAccountName >= ''m'' ') ) a |
2ª Aumentar o tamanho da paginação