Cum se efectuează o interogare distribuit de SQL Server cu serverul OLAP


Rezumat


Acest articol descrie cum se efectuează o interogare distribuit de SQL Server pentru a regăsi date de pe un cub OLAP Services (sau Analysis Services). Cu Microsoft SQL Server versiunea 7.0, aveți posibilitatea să efectuați interogările de furnizori OLE DB. Pentru aceasta, aveți posibilitatea să:
  • Utilizați DeschidereInterogare sau funcțiile OPENROWSET Transact-SQL. - sau -
  • Utilizați o interogare cu patru nume, inclusiv un nume de server legat.
De exemplu:
sp_addlinkedserver 'mylinkedserver', 'product_name', 'myoledbprovider', 'data_source','location', 'provider_string', 'catalog'

SELECT * FROM OPENQUERY(mylinkedserver, 'select * from table1')
Utilizați OPENROWSET sau funcția DeschidereInterogare într-o instrucţiune SQL Server selectați să treacă interogări la serverul OLAP legat. Interogarea este limitat la sintaxa selectați prescurtat, care este acceptat de serviciile OLAP; cu toate acestea, interogarea poate include sintaxa multidimensională expresii (MDX). O interogare care include MDX returnează "aplatizate rowsets" descris în documentația OLE DB. Pentru mai multe informații despre sintaxa selectați acceptate de SQL Server OLAP Services, consultați subiectul "Acceptate SQL selectați sintaxa" în OLAP Services Books Online.

Pentru a interoga local sau un remote server de date OLAP de la SQL Server, trebuie să instalați furnizorul MSOLAP OLE DB pe computerul care execută SQL Server. MSOLAP OLE DB provider este instalat atunci când instalaţi OLAP client componentele de pe CD SQL Server 7.0.


Exemplu OPENROWSET și DeschidereInterogare

Următorul exemplu de cod Transact-SQL demonstrează cum să configurați și să utilizați interogări distribuite cu un server OLAP cu DeschidereInterogare și funcțiile OpenRowset . Trebuie să modificați numele de sursă de date și catalog numele corespunzător.
------------------------------------------
--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])' )
Notă Subiectul "Trece interogări de la SQL Server la un legat OLAP Server", în OLAP Services Books Online, are o eroare de documentație în exemplu de cod:
SELECT * FROM OPENQUERY(olap_server,
'SELECT [customer], [quantity] FROM sales')
Este acceptată numai o formă limitată de SQL și numai nivelul sau măsură numele pot fi specificate. Când executați interogarea, primiți acest mesaj de eroare:
Server: Msg 7399, Level 16, State 1, Line 1 OLE DB provider 'MSOLAP' a raportat o eroare. [Furnizor OLE/DB returnat mesajul: coloana name 'client' nu este validă. Numai nivel sau măsură numele pot fi specificate.]
O modalitate de a remedia interogarea este să utilizați următoarele:
SELECT * FROM OPENQUERY(olap_server,
'SELECT [unit sales] FROM sales')
Cu toate acestea, trece SQL instrucțiuni în acest formular OLAP Server poate fi foarte lent, și este posibil să primiți o eroare de expirare pe anumite computere:
Furnizor OLE DB 'MSOLAP' a raportat o eroare. [Furnizor OLE/DB returnat mesajul: nu se poate deschide baze de date 'foodmart'] [Furnizor OLE/DB returnat mesajul: eroare de server OLAP: Operațiunea solicitată nu a reușit din cauza timeout.]

Exemple de server legat cu patru nume

Exemplu de cod Transact-SQL în această secțiune demonstrează utilizarea unui server legat cu un nume de patru pentru a interoga o cubul OLAP. În cod, server legat numit Olap_server a fost creat în exemplul anterior:
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]
Deși legat exemple de server cu un nume de patru lucru bine, le poate dura mult timp pentru a returna un rezultat la client. Sintaxa patru nume este un concept SQL Server; Acesta este utilizat într-o comandă Transact-SQL pentru a face referire la un tabel într-un server legat și it has limitat sintaxa pentru OLAP interogări. SQL Server poate determina că trebuie să citiți tabelul de fapt întreaga din serverul OLAP și efectuați grup de la sine, care poate dura semnificativ resurse și ora.

Microsoft recomandă că trimiteți o instrucțiune MDX printr-o OPENROWSET sau o funcţie DeschidereInterogare, așa cum se arată în exemplele anterioare. Această metodă permite SQL Server trimite comanda direct la furnizorul OLAP legat, fără a încerca să-l-a analizat. Comanda poate fi MDX sau subset de SQL care acceptă furnizorul OLAP. Se poate utiliza set de rânduri returnate de funcţia DeschidereInterogare în alți operatori SQL. Pentru bază MDX interogări și grup de interogări care returnează o cantitate relativ mică de date (cum ar fi un screenful), setul de rezultate trebuie să fie întotdeauna creat în mai puțin de 10 secunde, în general, 5 secunde, indiferent de dimensiunea cubului. Dacă interogările dura mai mult, puteți să vă construiți mai multe completări utilizând Expertul de analiză pe bază de utilizare.

Sfaturi pentru performanță

Iată câteva sfaturi de performanță:
  • SQL Server se deschide două conexiuni la furnizorul OLAP pentru fiecare interogare. Una dintre aceste este reutilizată pentru interogări ulterioare; de aceea, dacă executați comanda din nou, a doua interogarea pot executa mai repede.
  • Pentru a mări viteza, grup de o altă dimensiune (deoarece primesc mai puține date).
  • Un scenariu rău ar fi atunci când cub este stocat prin relaționale OLAP (ROLAP) și nu există nici o agregare. Apoi, serverul OLAP se deschide o conexiune la SQL Server pentru a obține faptul rânduri de tabel. Utilizarea unei interogări distribuite de SQL Server în acest caz.
  • Dacă aveți nevoie de un rezultat setat la un server OLAP sau un fișier cub, încercați execută SQL Server sau interogarea multidimensională direct împotriva OLAP server sau orice fișier cub, utilizând o aplicație OLE DB C++ sau o aplicație ADO(ADO*MD).
  • SQL Server unii furnizori OLE DB se instalează şi configurează cele pentru a încărca în timpul procesului. Deoarece furnizorul MSOLAP nu este instalat de SQL Server, este configurat pentru a încărca în afara procesului. Microsoft recomandă insistent să modificați opțiunile pentru furnizorul OLAP pentru a încărca ca în timpul procesului, deoarece această configurație îmbunătățește funcționarea interogărilor OLAP dvs. Pentru ca modificarea, urmați acești pași:
    1. În folderul de Securitate , faceți clic dreapta pe Serverele legat, și apoi faceți clic pe Noul Server legat.
    2. Nume furnizor, faceți clic pentru a selecta Microsoft OLE DB Provider pentru OLAP Services.
    3. Faceți clic pe Opțiuni.
    4. Faceți clic pentru a selecta Permite InProcess.
    5. Faceți clic pe OK.

Referințe


Pentru o descriere detaliată a sp_addlinkedserver procedură stocată parametri, consultați manualele Online SQL Server 7.0.

Pentru mai multe detalii despre configurarea și utilizarea interogări distribuite, căutați în sp_addlinkedserver, "DeschidereInterogare", "OPENROWSET" și subiecte, în manualele Online SQL Server 7.0.

Pentru a afla mai multe despre tehnologia OLAP și sintaxă MDX, consultați OLAP Services Books Online. Pentru informații despre utilizarea securitate cu OLAP Services, consultaţi următorul articol din baza de cunoștințe Microsoft:
242025 modul de configurare securitate pentru server legat la servicii OLAP