Как да извършите разпределени заявки SQL сървър с OLAP сървър

В ТАЗИ ЗАДАЧА

Резюме

Тази статия се описва как да извършите SQL Server разпределена заявка за извличане на данни от OLAP услуги (или услугите за анализ) куб. С Microsoft SQL Server версия 7.0 можете да извършвате запитвания в OLE DB доставчици. За да направите това, можете да:

  • Използвайте OPENQUERY или OPENROWSET Transact-SQL функции. - или -

  • Използвайте заявка с четири части имена, включително свързани-име на сървъра.

Например:

sp_addlinkedserver 'mylinkedserver', 'product_name', 'myoledbprovider', 'data_source','location', 'provider_string', 'catalog'

SELECT * FROM OPENQUERY(mylinkedserver, 'select * from table1')

Можете да използвате OPENROWSET или функцията OPENQUERY в SQL Server изберете отчет да подава запитвания свързани OLAP сървър. Заявката е ограничен до съкратено изберете синтаксис, който се поддържа от OLAP услуги; обаче заявката може да включва много изрази (MDX) синтаксис. Заявка, която включва MDX връща "плоска rowsets", както е описано в документацията на OLE DB. За повече информация относно изберете синтаксис, поддържани от тип OLAP вижте темата "Поддържа SQL изберете синтаксис" в OLAP услуги Books Online.

За търсене на локален или отдалечен OLAP сървър база данни от SQL Server, трябва да инсталирате MSOLAP OLE DB доставчика на компютъра, на който работи SQL Server. MSOLAP OLE DB доставчика се инсталира, когато инсталирате клиентски компоненти на OLAP от Компактдиска на SQL Server 7.0.


OPENROWSET и OPENQUERY пример

Следният пример Transact-SQL код показва как да настроите и използвате разпределени заявки с OLAP сървър с OPENQUERY и OpenRowset функции. Трябва да промените на имена на източник на данни и името на каталога според.

------------------------------------------
--OPENROWSET for OLAP Server
------------------------------------------


SELECT a.* FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT Measures.members ON ROWS,
[Product Category].members ON COLUMNS
FROM [Sales]') as a
go

-- Example of MDX with slicing --

SELECT a.* FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy] )') as a

--------------------------------------------------
-- Linked Server Examples with OPENQUERY
--------------------------------------------------

EXEC sp_addlinkedserver
@server='olap_server',
@srvproduct='',
@provider='MSOLAP',

@datasrc='server',
@catalog='foodmart'

go

-- MDX in OPENQUERY --

SELECT * FROM OPENQUERY(olap_server,
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy])' )

Забележка: Темата "Преминаване заявки от SQL Server за свързан OLAP сървър" в OLAP услуги книги онлайн, има грешка в документацията в пример код:

SELECT * FROM OPENQUERY(olap_server,
'SELECT [customer], [quantity] FROM sales')

Се поддържа само ограничена форма на SQL и само ниво или мярка имена могат да бъдат уточнени. Когато изпълнявате заявката, получавате това съобщение за грешка:

Сървър: Msg 7399 ниво 16, държава 1, ред 1 OLE DB доставчика "MSOLAP" съобщи за грешка. [/ OLE DB доставчик връща съобщение: колона име "клиент" е невалиден. Само ниво или мярка имена могат да бъдат уточнени.]

Един начин за решаване на заявката е да използвате следното:

SELECT * FROM OPENQUERY(olap_server,
'SELECT [unit sales] FROM sales')

Обаче като SQL отчети в тази форма на OLAP сървър може да е много бавно и може да получите грешка на активността на някои компютри:

OLE DB доставчика "MSOLAP" съобщи за грешка. [/ OLE DB доставчик връща съобщение: не може да отвори базата данни "foodmart"] [/ OLE DB доставчик връща съобщение: грешка в сървъра OLAP: операция изисква неуспешно поради изтичане на времето.]

Примери за свързан сървър с четири части имена

Например Transact-SQL код в този раздел показва използването на свързан сървър с четири части име заявка OLAP куб. В кода свързан сървър на име Olap_server е създадена в предишния пример:

Select [Store:Store Name] from Olap_server.FoodMart..[sales] WHERE [Store:Store State]='WA'

go

Select [Product:Product Category], count ([Store:Store Name]) from Olap_server.FoodMart..[sales]
WHERE [Store:Store State]='WA'
GROUP BY [Product:Product Category]

Въпреки че свързан сървър примери с четири части име работи добре, те може да отнеме много време да се върне в резултат на клиента. Синтаксисът на четири части името е SQL Server идея; Той се използва в Transact-SQL команда таблица в свързан сървър и тя е с ограничена синтаксис за OLAP заявки. SQL Server може да определи, че трябва да прочете цялата факт от OLAP сървър и изпълнява група по себе си, което може да отнеме значителни ресурси и време.

Microsoft препоръчва да изпратите MDX команда чрез OPENROWSET или OPENQUERY функция, както е показано в примера по-рано. Този метод позволява да изпрати команда директно към свързания OLAP доставчик, без да се опитва да го направи анализ на SQL Server. Командата е MDX или част от SQL, OLAP доставчикът поддържа. Можете да използвате редове, върната от функцията OPENQUERY в други оператори на SQL. Основни MDX заявки и група от заявки, които връщат незначително количество данни (като screenful) резултата винаги трябва да бъде създаден в по-малко от 10 секунди, обикновено по 5 секунди, независимо от размера на Куба. Ако са необходими повече заявки, можете да създавате повече цветна чрез анализ на използване на съветника.

Съвети

Ето някои съвети:

  • SQL Server отваря две връзки към OLAP доставчик за всяка заявка. Един от тези се използва за по-късни заявки; Следователно ако изпълните командата отново, втората заявка може да работи по-бързо.

  • Да увеличите скоростта, група от друго измерение (защото получавате по-малко данни).

  • Най-лошия сценарий ще бъде когато Куба се съхранява чрез релационни OLAP (ROLAP) и няма никакви натрупване. След това OLAP сървъра отваря връзка към SQL сървър, за да получите това редовете на таблицата. В този случай не използвайте SQL Server разпределена заявка.

  • Ако ви е нужно резултат, зададени от OLAP сървър или файл за куб, опитайте с SQL Server или многоизмерен заявката директно от OLAP сървър или всеки куб файл, използвайки OLE DB C++ приложение или ADO(ADO*MD).

  • SQL Server някои OLE DB доставчици се инсталира и конфигурира да зареди в процеса. Тъй като предоставянето на MSOLAP не е инсталиран от SQL Server, е конфигуриран да се зареди на процес. Microsoft настоятелно препоръчва да промените опциите за OLAP доставчик да се зареди в процес, защото тази конфигурация подобрява производителността на вашия OLAP заявки. За да промените, изпълнете следните стъпки:

    1. В папката за защита щракнете върху Свързани сървърии изберете Нов свързан сървър.

    2. Име на доставчика, изберете Microsoft OLE DB доставчика за OLAP услуги.

    3. Щракнете върху Опции.

    4. Щракнете, за да изберете Позволяват InProcess.

    5. Щракнете OK.

Препратки

За подробно описание на sp_addlinkedserver параметри на съхранена процедура, вижте SQL Server 7.0 Books Online.

За повече информация относно създаването и използването на разпределени заявки Потърсете sp_addlinkedserver"OPENQUERY", "OPENROWSET" и сродни теми в книгите за SQL Server 7.0 онлайн.

За да научите повече за OLAP технология и MDX синтаксис, вижте OLAP услуги Books Online. За информация относно използването на защита с OLAP услуги вижте следната статия в базата знания на Microsoft:

242025 как да настроите защитата за свързан сървър с OLAP услуги

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×