V TOMTO ÚKOLU

Souhrn

Tento článek popisuje, jak provádět distribuované dotazu SQL Server k načtení dat z krychle OLAP Services (nebo služby Analysis Services). S Microsoft SQL Server verze 7.0 můžete provést dotazy vůči zprostředkovatele technologie OLE DB. Chcete-li to provést, můžete:

  • Používejte OTEVŘÍTDOTAZ nebo funkce OPENROWSET Transact-SQL. - nebo -

  • Se čtyřmi částmi názvy, včetně názvu propojený server pomocí dotazu.

Například:

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

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

Předávat dotazy propojený server OLAP, můžete použít OPENROWSET nebo funkce OTEVŘÍTDOTAZ v příkazu SQL Server SELECT. Dotaz je omezena na zkrácený syntaxe SELECT podporovaný OLAP Services; dotaz však můžete zahrnout syntaxe Multidimensional Expressions (MDX). Dotaz, který zahrnuje MDX vrátí "sloučený řádků" popsaným v dokumentaci OLE DB. Další informace o syntaxi SELECT podporovány SQL Server OLAP Services naleznete v tématu "Podporované syntaxe jazyka SQL vyberte" v OLAP Services Books Online.

Dotaz na místní nebo vzdálené databáze serveru OLAP ze serveru SQL Server, je nutné nainstalovat v počítači, který je spuštěn SQL Server zprostředkovatele MSOLAP OLE DB. Zprostředkovatel MSOLAP OLE DB je nainstalován při instalaci součásti klienta OLAP z disku CD-ROM serveru SQL Server 7.0.


Příklad OPENROWSET a OTEVŘÍTDOTAZ

Následující Transact-SQL příklad kódu ukazuje, jak nastavit a používat se serverem OLAP pomocí funkce OpenRowset OTEVŘÍTDOTAZ a distribuovaných dotazy. Je třeba změnit názvy zdrojů dat a název katalogu podle potřeby.

------------------------------------------
--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])' )

Poznámka: "Předávání dotazů z k propojení SQL OLAP Server" téma v OLAP Services Books Online, je chyba dokumentace v příkladu kódu:

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

Je podporován pouze omezené SQL a může být zadán pouze názvy úroveň nebo rozměr. Při spuštění dotazu, zobrazí se tato chybová zpráva:

Server: Msg 7399, úroveň 16, stavu 1 řádek 1 zprostředkovatele OLE DB "MSOLAP" ohlásil chybu. [Zprostředkovatel OLE/DB vrátil zprávu: sloupec název 'odběratele' není platný. Pouze názvy úroveň nebo rozměr může být zadán.]

Jeden způsob, jak vyřešit dotaz je následující:

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

Formuláři OLAP Server může být velmi pomalé a můžete obdržet chybu časový limit v některých počítačích, však předáním příkazů SQL:

Zprostředkovatel OLE DB "MSOLAP" ohlásil chybu. [Zprostředkovatel OLE/DB vrátil zprávu: Nelze otevřít databázi foodmart] [Zprostředkovatel OLE/DB vrátil zprávu: Chyba serveru OLAP: operace požadavku se nezdařilo, protože vypršel časový limit.]

Příklady propojený server se čtyřmi částmi názvy

Příklad kódu Transact-SQL v této části ukazuje použití propojený server se čtyřmi částmi názvu dotazu datovou krychli OLAP. V kódu byl vytvořen propojený server s názvem Olap_server v předchozím příkladu:

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]

Sice dobře propojený příklady server se čtyřmi částmi názvu práce, se může trvat dlouhou dobu k vrácení výsledků klientovi. Syntaxe čtyřmi částmi názvu je koncept SQL Server; používá se v příkazu Transact-SQL chcete-li odkazovat na tabulky v propojený server a má omezený syntaxi dotazů OLAP. SQL Server může zjistit, že musíte číst celé tabulky ze serveru OLAP a provádět skupiny SÁM, což může trvat významné zdroje a čas.

Společnost Microsoft doporučuje odeslat Multidimenzionálního příkazu prostřednictvím OPENROWSET nebo funkce OTEVŘÍTDOTAZ, jak je uvedeno v předchozích příkladech. Tato metoda umožňuje odeslat příkaz přímo do propojené zprostředkovatele OLAP bez pokusu analyzovat ji Server SQL. Příkaz může být MDX nebo podmnožinu SQL, který podporuje zprostředkovatele OLAP. Sady řádků vrácených z funkce OTEVŘÍTDOTAZ v jiné operátory jazyka SQL můžete použít. Základní dotazy MDX a skupiny tak, že dotazy, které vracejí relativně malé množství dat (jako screenful) musí být vždy vytvořeny sady výsledků za méně než 10 sekund, obvykle během 5 sekund, bez ohledu na velikost kostky. Pokud dotazy trvat déle, můžete vytvořit více agregace pomocí analýzy založené na používání průvodce.

Tipy pro výkon

Zde jsou některé tipy pro výkon:

  • SQL Server otevře dvě připojení ke zprostředkovateli OLAP pro každý dotaz. Jeden z těch, které je znovu použít pro pozdější dotazy; Proto při spuštění příkazu druhý dotaz pravděpodobně rychleji.

  • Chcete-li zvýšit rychlost, Seskupit podle jiné dimenzi (protože jsou stále méně dat).

  • Nejhoršího by být krychle uložena prostřednictvím relační OLAP (ROLAP) a není k dispozici žádná agregace. OLAP server potom otevře připojení zpět k serveru SQL Server získat řádky tabulky fakt. V tomto případě nepoužívejte distribuovaný dotaz serveru SQL Server.

  • Pokud potřebujete pouze množinu výsledků ze serveru OLAP nebo souboru datové krychle, zkuste spustit SQL Server nebo vícedimenzionální dotaz přímo proti serveru OLAP nebo jakýkoli soubor datové krychle pomocí OLE DB C++ aplikace nebo aplikace ADO(ADO*MD).

  • SQL Server nainstaluje někteří zprostředkovatelé technologie OLE DB a konfiguruje ty načíst v procesu. Protože zprostředkovatel MSOLAP není nainstalován SQL Server, je nakonfigurován k načtení out-of-process. Společnost Microsoft důrazně doporučuje změnit možnosti zprostředkovatele OLAP načíst jako v procesu, protože tato konfigurace zvyšuje výkon dotazů OLAP. Chcete-li provést změnu, postupujte takto:

    1. Ve složce zabezpečení Propojené serveryklepněte pravým tlačítkem myši a potom klepněte na tlačítko Nový propojený Server.

    2. Název zprostředkovateleklepněte na vyberte Microsoft OLE DB Provider for OLAP Services.

    3. Klepněte na tlačítko Možnosti.

    4. Klepnutím vyberte Povolit InProcess.

    5. Klepněte na tlačítko OK

Odkazy

Podrobný popis sp_addlinkedserver parametry uložené procedury v tématu SQL Server 7.0 Books Online.

Další informace o nastavení a používání distribuovaných dotazů hledat v sp_addlinkedserver, "OTEVŘÍTDOTAZ", "OPENROWSET" a související témata v SQL Server 7.0 Books Online.

Další informace o technologii OLAP a syntaxe MDX naleznete v tématu OLAP Services Books Online. Informace o použití zabezpečení s OLAP Services naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

Jak nastavit zabezpečení pro propojený server OLAP Services 242025

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?

Děkujeme vám za zpětnou vazbu.

×