Freigeben über


Введение в SQL Server Analysis Services для разработчика. Доступ по HTTP.

Содержание предыдущей серии

Аналогично реляционному механизму SQL Server (см., напр., пост " SQL Server Native Web Services" в MSDNовском блоге прошлым летом) аналитический сервер Analysis Services также может выступать веб-сервисом и поддерживает обращения по HTTP. В отличие от реляционного SQL Server, где SOAPовский стек был реализован внутри движка 2005, поддержка SOAP в Analysis Services носит более глубинный характер, т.к. основной язык общения с сервером Analysis Services – XMLA – является SOAPовским по своей сути. В отличие от реляционного SQL Server, который, будучи установлен на Windows Server 2003 и выше, умеет пользоваться драйвером HTTP.SYS и поддерживает собственными средствами создание конечных точек, по урлам которых драйвер перенаправляет поступающие HTTP-запросы, в Analysis Services поддержка HTTP носит более поверхностный характер. AS не умеет самостоятельно создавать конечные точки; ему необходим веб-сервер. Схема работы по HTTP в версиях 2005, 2008, 2008 R2 претерпела мало изменений по сравнению с версией 2000 (http://msdn.microsoft.com/en-us/library/aa902670(SQL.80).aspx). msmdpump.dll есть ISAPI-фильтр, который обеспечивает трансляцию HTTP-заголовков в TCP/IP, управляет пулом потоков при различных настройках безопасности и т.д. Первоначально msmdpump соединялся с Analysis Services по Shared Memory, что предполагало размещение сервера Analysis Services физически на той же машине, что и IIS. C версии 2000 SP3 также поддерживается протокол Named Pipes, что дает возможность разносить IIS и Analysis Services на разные компы. Конфигурирование HTTP-доступа в случае Analysis Services 2005 на Windows Server 2003 Эдвард Меломед описал здесь - http://www.microsoft.com/technet/prodtechnol/sql/2005/httpasws.mspx. Конфигурирование HTTP-доступа в случае Analysis Services 2005 на Windows ХР он описал здесь - http://www.microsoft.com/technet/prodtechnol/sql/2005/httpssas.mspx. Конфигурирование HTTP-доступа в случае Analysis Services 2008 он не описал – то ли забил, то ли не подсуетился. В принципе, это не принципиально, поскольку принципиальных отличий от 2005 в ней нет. Доброе дело подхватили энтузиасты. Конфигурирование HTTP-доступа к Analysis Services 2008 на Windows Server 2008 описывается здесь. А здесь мы для очистки совести разберем оставшийся вариант - конфигурирование HTTP-доступа к Analysis Services 2008 R2 на Windows 7.

Как уже отмечалось выше, в отличие от реляционного SQL Server 2008, который умеет пользоваться http.sys и потому в этом плане самодостаточен, Analysis Services для работы по HTTP требуется IIS. По умолчанию аяец на семерке, как и на Висте, не установлен. Чтобы его установить, пойдите в Control Panel\Programs and Features, кликните слева Turn Windows features on or off. Процесс установки IIS в картинках представлен здесь. Тыкните один раз в Internet Information Services. Супротив него появится не галочка, а квадратик, что означает, что внутри какие-то подфичи не выбраны. Помимо галочек, которые он поставил по дефолту, я еще выбрал ASP.NET, что автоматически повлекло за собой .NET Extensibility, ISAPI Extensions и ISAPI Filters. Еще я поставил галочки у Basic и Windows Authentication. Полный перечень получившихся галок можно посмотреть здесь:

image

рис.1

Жмем ОК.

image

рис.2

Создадим где-нибудь папку, например, C:\Demo\OLAP_HTTP. В силу соображений безопасности ее лучше создавать на NTFS. В силу ограничений IIS полный путь не должен содержать пробелов.

Скопируем туда содержимое C:\Program Files\Microsoft SQL Server\MSAS10_50.MSSQLSERVER\OLAP\bin\isapi. Если IIS находится на другой машине, чем Analysis Services, на нее нужно поставить Microsoft SQL Server 2008 R2 Analysis Services OLE DB Provider, который в отдельном виде на сегодня берется из состава Microsoft® SQL Server® 2008 R2 November Community Technology Preview Feature Pack.

Открываем Administrative Tools -> Internet Information Services (IIS) Manager и на уровне сервера заходим в пункт ISAPI and CGI Restrictions (Внимание! Этот пункт не будет доступен, если на этапе установки IIS не выбрать ISAPI Extensions – см. рис.1)

image

рис.3

и разрешаем ISAPI-расширение в виде msmdpump.dll, скопированной в директорию будущего веб-приложения.

image

рис.4

Добавляем новый Application Pool

image

рис.5

который неважно, как будет называться, например, MSOLAP

image

рис.6

Раскрываем слева папку Sites, кликаем правой кнопкой на Default Web Site и говорим Add Application

image

рис.7

Создаем приложение, которое мы назовем неважно, как, например, MSOLAP, ссылающееся на ранее созданную папку, в которую мы скопировали содержимое ...\OLAP\bin\isapi (Physical path). Нажатием кнопки Select выбираем из списка пулов свежесозданный пул MSOLAP.

image

рис.8

Если на IIS уже существовала виртуальная директория, ссылающаяся на ту же физическую папку, ее нужно проконвертировать в приложение:

image

рис.9

Application Pool при конвертации выбирается аналогично рис.8.

Для образовавшейся аппликации даблкликаем на Handler Mappings

image

рис.10

и выбираем в правой панели Edit Feature Permissions

image

рис.11

Убеждаемся, что присутствуют права Read и Script. Жмем ОК.

Выбираем в правой панели Add Script Map, в Request Path вводим *.dll, в Executable - C:\Demo\OLAP_HTTP\msmdpump.dll, где C:\Demo\OLAP_HTTP – путь к директории приложения MSOLAP, и Name – произвольное имя. Допустим, снова MSOLAP.

image

рис.12

Выдастся предупреждение

image

рис.13

Вообще-то мне казалось, что это расширение я уже разрешил на рис.4. Ну да ладно, нажал Yes.

Вот уже 12 лет, как Analysis Services не имеет в своем составе средств стандартной аутентификации в отличие, скажем, от SQL Server. Ее там не было никогда. С момента своего появления в SQL Server 7.0 OLAP Services работали исключительно в режиме Windows-аутентификации. Все равно каждый раз на очередной Платформе кто-нибудь обязательно задаст вопрос, как настроить Analysis Services, чтобы при коннекте выдавалось окошечко, куда вводить логин и пароль. Народные чаяния понятны. Интегрированная Windows-аутентификация, когда используются credentials пользователя, предоставленные им в процессе логона в домен, удобна и надежна, однако возникают проблемы, когда сервер и юзер находятся в разных доменах. Конечно, траст, Керберос или, например, VPN никто не отменял, однако не всегда они возможны в силу разных обстоятельств. В случае доступа к AS через HTTP промежуточным звеном становится веб-сервер, на который можно возложить функции базовой аутентификации. Стоя на виртуальной директории MSOLAP, кликните в средней панели иконку Authentication.

image

рис.14

Если при установке IIS вы отметили в Security галки Basic Authentication и Windows Authentication, как было показано на рис.1, картинка будет выглядеть следующим образом. Задисейблите анонимную аутентификацию и включите базовую:

image

рис.15

Напоминаю, что в случае базовой аутентификации соединение должно быть защищено SSL, чтобы не гнать по нему логин/пароль в открытом виде. Я знаю, что все это знают, но стюардессы тоже перед каждым взлетом производят демонстрацию аварийно-спасательного оборудования и говорят «плотно прижмите маску к носу и рту», хотя сами этого не делают.

Если сервер Analysis Services находится на машине, отличной от IIS, в виртуальной директории msolap (сиречь C:\Demo\OLAPHTTP в данном примере) надо открыть конфигурационный файл msmdpump.ini и подправить имя OLAP-сервера на фактическое. IIS и OLAP должны располагаться в одном или по крайней мере в трастовых доменах. Сценарий с доступом партнеров состоит в том, что аяец находится в дмз, а OLAP – во внутреннем сегменте.

image

рис.16

Теперь вроде все. К OLAP-серверу можно ходить по HTTP. В моем простейшем примере не будет ни SSL, ни DMZ; IIS и OLAP расположены на одной машине. Я просто возьму другую машину, не связанную с первой никакими трастами. Только веревкой. Открою на ней Excel и подключусь из него к OLAP-серверу, но по HTTP. Проверяем предварительно, что HTTP-запросы с нее отрабатываются нормально, например, из IE открывается дефолтный сайт. Он не открывается. Очень хорошо. Проверяем, что машина, на которой мы только что сконфигурировали HTTP-доступ для OLAP пингуется с той машины, на которой открывается Excel. Значит, с коннективностью все нормально, а на файрволе AS открыт ICMP, но закрыт 80-й. Открываем на семерочной машине настройку файрвола Administrative Tools -> Windows Firewall with Advanced Security и енейблим в Inbound Rules правило World Wide Web Services (HTTP Traffic In). Все заработало:

image

рис.17

На удаленной машине открываем Excel -> From Other Sources -> From Analysis Services:

image

рис.18

только в строке соединения вместо имени сервера пишем http://192.168.0.29/msolap/msmdpump.dll. Здесь 192.168.0.29 - адрес машины, где установлен AS. В User Name указывается пользователь из того домена, где установлен AS, с правами доступа к соответствующей многомерной базе.

image

рис.19

Натурально, соединяемся.

image

рис.20

Дальше могут возникнуть ошибки, которые мы разберем, как лечить, в следующей серии. Но они к делу не относятся. Мы увидели, что наряду с TCP протокол HTTP поддерживается в Analysis Services для обслуживания XMLA-запросов.

Переход на следующую серию

 

Алексей Шуленин

image