Ответ Ната близок.Это на самом деле таблица UserInfo.Числа соответствуют столбцу tp_ID этой таблицы.К сожалению, я до сих пор не могу понять, как получить эту информацию с помощью служб SSIS, поэтому я прибегаю к написанию консольного приложения, которое извлекает данные таблицы через веб-сервис Sharepoint, выгружает их в таблицу базы данных и планирует их с помощью задачи Windows.Планировщик.Кроме того, из-за того, как работает Sharepoint, каждое корневое семейство сайтов имеет разные идентификаторы для каждого человека, поэтому мне нужно будет выполнить отдельные операции для каждого корневого семейства сайтов.Вот метод, который я использую:
private static XElement GetUserInfo(string siteCollectionListsSvc)
{
SharepointListsSvc.ListsSoapClient ws = new SharepointListsSvc.ListsSoapClient();
ws.Endpoint.Address = new System.ServiceModel.EndpointAddress(siteCollectionListsSvc);
ws.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
ws.ClientCredentials.Windows.AllowNtlm = true;
ws.ClientCredentials.Windows.ClientCredential = (System.Net.NetworkCredential)System.Net.CredentialCache.DefaultCredentials;
XElement userInfo = ws.GetListItems("UserInfo", String.Empty, null, null, "4000", null, null);
return userInfo;
}
Аргумент метода будет выглядеть примерно так: "http://www.my.site/_vti_bin/lists.asmx". Конфигурация моего приложения, которая устанавливает привязку и конечную точку:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ListsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="5000000" maxBufferPoolSize="524288" maxReceivedMessageSize="5000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.my.site/_vti_bin/lists.asmx"
binding="basicHttpBinding" bindingConfiguration="ListsSoap"
contract="SharepointListsSvc.ListsSoap" name="ListsSoap" />
</client>
</system.serviceModel>
</configuration>
Обратите внимание, чтоЯ увеличил // binding / @ maxBufferSize и // binding / @ maxReceivedMessageSize со значения по умолчанию 65536 до 5000000. У нас есть около 3000 записей, которые могут быть возвращены, и размер по умолчанию не был достаточно большим.все внутренние вызовы, я не беспокоюсь о задержке в сети. Другие изменения привязки по умолчанию находятся в элементе // security, в частности в атрибутах @mode и // transport / @ clientCredentialType.
Когда вы получаетеXML обратно, номер (хранится в поле PoG) находится в атрибуте // z: row / @ ows_ID, а его соответствующий логин ADS - в атрибуте // z: row / @ ows_Name. Вы также получаете адрес электронной почты обратнов атрибуте // z: row / @ ows_EMail.
Надеюсь, это поможет другим решить эту проблему!