Как импортировать данные Active Directory в таблицу SQL Server с помощью запроса?

CREATE TABLE T_AD_Data
(
    lab_sAMAccountName varchar(100),
    lab_displayName varchar(100),
    lab_department varchar(100),
    lab_physicalDeliveryOfficeName varchar(100), 
);

INSERT INTO T_AD_Data
   SELECT * 
   FROM OpenQuery (ADSI,  
                   'SELECT sAMAccountName, displayName, department, physicalDeliveryOfficeName 
                    FROM ''LDAP://lab.com/DC=lab,DC=com'' 
                    WHERE objectClass =  ''User'' ') AS tblADSI

Ошибка:

Сообщение 7330, уровень 16, состояние 2, строка 1
Не удается получить строку из OLE DBprovider "ADSDSOObject" для связанного сервера "ADSI"


person sravan kumar    schedule 28.07.2015    source источник
comment
Возможно, вы превысили лимит строк, извлекаемых командой OPENQUERY.   -  person Joe Taras    schedule 31.07.2015


Ответы (1)


Я знаю, что это очень старый вопрос, но проблема, с которой вы столкнулись, вызвана тем, что запрос ADSI возвращает более 901 записи. До SQL 2008 это не вызывало проблем, просто количество записей было ограничено. Но в SQL 2008 или более поздних версиях при достижении этого предела вместо усечения результатов возникает ошибка времени выполнения.

Обойти эту проблему с помощью какого-то решения подкачки, которое использует несколько запросов, как в моем ответе здесь: https://stackoverflow.com/a/43057890/197090

person John Sinclair    schedule 06.04.2017