четверг, 19 сентября 2013 г.

Конечная точка в MS SQL

А точнее точки типа SOAP. Основной принцип достаточно красив: в SQL Server встроен урезанный вебсервер, который обеспечивает работу вебсервиса, который, в свою очередь, позволяет обращаться к хранимым процедурам. Но как всегда есть некоторые НО!

Первое. Визуальных средств работы с конечными точками практически нет, потому всё делается скриптами. Проблема на самом деле не такая большая, а для кого то и вообще штатный режим работы. Вот скрипт создания конечной точки:

CREATE ENDPOINT [TestServices]
        AUTHORIZATION [username]  
        STATE=STARTED
        AS HTTP (PATH=N'/testservices/', PORTS = (CLEAR), AUTHENTICATION = (NTLM, KERBEROS, INTEGRATED), SITE=N'*', CLEAR_PORT = 7175, COMPRESSION=DISABLED)
        FOR SOAP (
WEBMETHOD 'TestService'( NAME=N'[Temp].[dbo].[get_TestData]'
, SCHEMA=STANDARD
, FORMAT=ALL_RESULTS), BATCHES=ENABLED, WSDL=N'[master].[sys].[sp_http_generate_wsdl_defaultcomplexorsimple]', SESSIONS=DISABLED, SESSION_TIMEOUT=60, DATABASE=N'Temp',

NAMESPACE=N'http://Temp/', SCHEMA=STANDARD, CHARACTER_SET=XML)

Пройдемся по нему:

AUTHORIZATION [username]   -- Под этим пользователем будет исполняться служба
STATE=STARTED - состояние точки после создания. В данном случае она запущена

PATH=N'/testservices/ --путь для обращения к службе. относительный. адрес будет выглядеть вот так:  http://server_name/testservices/
PORTS = (CLEAR) ...... CLEAR_PORT = 7175  - указание портов, которые будет прослушивать служба. В данном случае соединение не зашифровано и работа идет по http. Можно указать PORTS = (SSL) ......SSL_PORT = 7175 и работать по https.

Остальное, в принципе, понятно. На всякий случай оставлю ссылку на подробное описание параметров.

После выполнения этого скрипта создается конечная точка. Права доступа к ней имеют администраторы и создатель. Добавление разрешения другим пользователям выполняется запросом:

    GRANT CONNECT ON  ENDPOINT::TestServices TO [username]

Теперь к по настоящему неприятным моментам.
Второй: разработчики решили отказаться от использования этих точек, и в 2012 сервере они должны быть удалены.

Ну и третье. Конечные точки на SQL Server конфликтуют с IIS. Если у вас на одном сервере стоит и SQL Server и IIS, то весьма велики шансы на то, что вы банально не сможете авторизоваться на созданной службе, хотя всё прописано правильно. Лечится только разнесением SQL Server и IIS на разные сервера.

Похожие посты:

Комментариев нет:

Отправить комментарий