Как настроить исходящие соединения из хранимой процедуры SQL?

Я работаю над проектом .NET, который использует сервер Microsoft SQL. В этом проекте мне нужна хранимая процедура CLR (написанная на C #), которая использует удаленную веб-службу. Таким образом, когда хранимая процедура выполняется на сервере SQL, она выполняет вызовы веб-службы и, таким образом, отправляет пакеты в удаленное место. Проблема в том, что при выполнении SP я получаю: «System.Net.WebException: запрос завершился неудачно со статусом HTTP 403: запрещено».

Пользователь базы данных имеет полное разрешение, развернутая сборка CLR и SP даже помечены как «небезопасные», я пытался подписать его и т. Д., Так что все это не вызывает проблемы.

Когда я выполняю тот же самый код C #, но из простого консольного приложения, а не как SP, все работает нормально. Итак, я начал подозревать проблему, связанную с сетью, и у меня был запущен анализатор пакетов при выполнении как версии SP, так и версии консольного приложения.

Я понял, что отправляемые пакеты имели разные IP-адреса назначения: консольное приложение отправляло пакеты непосредственно на IP-адрес веб-службы, в то время как SP отправлял пакеты на прокси-сервер, который мы используем в нашей компании. Последнее не разрешено из-за сетевых политик, что и объясняет исключение «403 Forbidden».

Итак, мой вопрос сводится к следующему: как я могу настроить сервер SP / MS SQL, чтобы НЕ использовать этот прокси? Я хочу, чтобы он отправлял пакеты прямо на IP-адрес веб-службы, как и приложение тестовой консоли. (опять же, код C # тот же, так что это не вопрос программирования).

Я отключил все настройки прокси в Internet Explorer на случай, если сервер SQL унаследует эти настройки или что-то в этом роде. Однако не повезло.

Любая помощь будет принята с благодарностью!

С уважением, Питер


person Peter Vestberg    schedule 16.05.2010    source источник


Ответы (2)


Не выполняйте веб-вызовы HTTP из SQL CLR.

Выполняйте все вызовы веб-служб из внешнего процесса. Если вы не хотите, чтобы ваш производственный сервер завис в состоянии нехватки рабочих ресурсов, и все потоки были заблокированы в событиях среды CLR. Вы были предупреждены.

person Remus Rusanu    schedule 16.05.2010

Наиболее вероятное объяснение - это какой-то прозрачный прокси на сетевом уровне. Я бы обсудил этот вопрос с тем, кто управляет / администрирует вашу сеть.

person Ben Robinson    schedule 16.05.2010