Пост, по сути являющийся адаптированным переводом, был написан несколько лет назад для портала GotDotNET, но он закрылся. Делюсь, поскольку, в своё время, я перелопатил кучу ресурсов в поисках достойного решения. Не плюсов ради.
Все, кто так или иначе, работал с Sharepoint 2010 сталкивался рано или поздно с задачей организации телефонного справочника компании непосредственно в виде списка Sharepoint. Материала и способов решения на просторах необъятного интернет пространства хватает, но далеко не все они работают должным образом.
Дано:
Сервер 2008 R2
Sharepoint Foundation 2010 с комплектным SQL Express
Новая база данных/таблица
Я использовал новую базу данных с пометкой на будущее, хотя достаточно будет просто создать новую таблицу с необходимыми полями. В качестве primary key поля, разумеется, самоиндексирующееся поле:
ИМЯ_ПОЛЯ INT IDENTITY(1,1) PRIMARY KEY NOT NULL
Добавляем линк SQL к AD
Выполняем следующие запросы:
sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource'
sp_configure 'show advanced options', 1
reconfigure with override
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure
В итоге получаем прилинкованый сервер с AD именующийся ADSI.
Заполняем таблицу данными
INSERT INTO [имя базы].[dbo].[имя таблицы]
([поле]
,[поле]
,[поле]
,[поле]
,[поле]
)
SELECT * FROM OpenQuery(ADSI, 'SELECT полеAD, полеAD, полеAD, полеAD, полеAD FROM ''LDAP://DC=domain,DC=local'' WHERE objectCategory=''user'' ')
Это элементарно и не ново, но вдруг попадутся новички, которые не дружат с SQL.
На последок
Имея таблицу в SQL с необходимыми полями, останется только подключить Sharepoint, используя внешний список.
Спасибо за внимание, надеюсь кому-то будет полезно.