Вот мой сценарий.
У меня SharePoint 2010 работает на одном сервере, а SQL Server работает на другом. Обе машины находятся в одном домене, но входящие в систему учетные записи являются локальными для каждой машины. SharePoint работает как NT Authority \ Network Service, если это имеет какое-либо значение.
Я создал BCS, который извлекает данные из удаленного SQL Server. Строка подключения выглядит следующим образом: Data Source={0}; Initial Catalog={1};User Id={2}; Password={3}; Integrated Security=SSPI
. Я подтвердил, что строка соединения правильно сформирована, после замены всех {x}.
Это прекрасно работает, если вы получаете доступ к сайту SharePoint из браузера, работающего на том же компьютере (то есть на компьютере, на котором размещается SharePoint). После подключения к нему из браузера на другом компьютере происходит сбой.
Если запустить профилировщик на SQL Server, обнаружится, что при доступе к SharePoint «локально» пользователь, выполняющий запросы, является зарегистрированной учетной записью. Когда он работает удаленно, пользователь является «анонимным». Из-за прав доступа к учетной записи первый успешно выполняется, а второй - нет. Ни в коем случае пользователь фактически не указан в строке подключения.
Этот ответ указывает на то, что проблема, вероятно, связана с пулом соединений, но не помогла мне решить проблему.
Итак, в двух словах, как я могу заставить этот BCS фактически соблюдать пару имя пользователя / пароль строки подключения? Или, если это не удастся, как я могу достичь такого же конца? Настройка сервера (SharePoint на одном, SQL Server на другом) не подлежит обсуждению; к сожалению.