We couldn’t sign you in
Select the account you want to use.

在這項工作中

摘要

本文說明如何執行 SQL Server 分散式的查詢來擷取資料,從 OLAP 服務 (或分析服務) 的 cube。與 Microsoft SQL Server 7.0 版,您可以執行 OLE DB 提供者的查詢。若要這麼做,您可以:

  • 請使用 openquery 巨集或 OPENROWSET 考慮改用 SQL 函式。-或者-

  • 請使用查詢的四部分名稱,包括連結伺服器名稱。

例如:

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

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

您可以在 SQL Server SELECT 陳述式中使用 OPENROWSET 或 openquery 巨集函式,傳遞至連結的 OLAP 伺服器的查詢。查詢受限於縮寫的 SELECT 語法所支援的 OLAP 服務;不過,查詢可以包含多維度運算式 (MDX) 語法。包含 MDX 查詢會傳回"簡維資料列集 」 為 OLE DB 文件所述。如需有關支援的 SQL Server OLAP 服務選取語法的詳細資訊,請參閱 OLAP 服務線上叢書 》 中的 < 支援="" sql="" 選取語法=""> 主題。

若要查詢在本機或遠端的 OLAP 伺服器資料庫從 SQL Server,您必須執行 SQL Server 的電腦上安裝的 MSOLAP OLE DB 提供者。當您從 SQL Server 7.0 光碟片安裝 OLAP 的用戶端元件時,會安裝 MSOLAP OLE DB 提供者。


OPENROWSET 和 openquery 巨集範例

下列的考慮改用 SQL 程式碼範例會示範如何設定,並使用 openquery 巨集與OpenRowset函數 OLAP 伺服器的分散式的查詢。您必須變更為適當的類別目錄名稱與資料來源名稱。

------------------------------------------
--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 受支援,而且您可以指定只有層級或量值的名稱。當您執行查詢時,您會收到這個錯誤訊息:

伺服器: 訊息 7399、 層級 16,狀態 1,行 1 OLE DB 提供者 'MSOLAP' 發生錯誤。[OLE/DB 提供者傳回訊息: 資料行名稱 '客戶' 無效。只有層級或量值的名稱可以指定。]

若要修正查詢的一個方法是使用下列程式碼:

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

不過,在於 OLAP 伺服器的表單可能會非常慢,您可能會收到逾時錯誤,在某些電腦上的時,才能傳遞 SQL 陳述式:

OLE DB 提供者 'MSOLAP' 發生錯誤。[OLE/DB 提供者傳回訊息: 無法開啟資料庫 'foodmart'][OLE/DB 提供者傳回訊息: OLAP 伺服器錯誤: 要求的作業失敗,因為等候逾時。]

連結的伺服器的四部分名稱的範例

在本節中的考慮改用 SQL 程式碼範例示範如何使用連結伺服器查詢 OLAP cube 的四部分名稱。在程式碼中,先前的範例中所建立名為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 的概念;考慮改用 SQL 命令中用來參考連結伺服器中的資料表和有限制 OLAP 查詢的語法。SQL Server 可能會決定它必須用來從 OLAP 伺服器讀取整個事實資料表,並執行群組依據本身,這可能需要大量資源和時間。

Microsoft 建議您傳送的 MDX 陳述式,透過 OPENROWSET 或 openquery 巨集函式中先前的範例所示。這個方法可讓 SQL Server 的命令直接傳送至連結的 OLAP 提供者,而不嘗試剖析它。命令可以是 MDX 或 SQL OLAP 提供者支援的子集。您可以使用 openquery 巨集函式,在其他的 SQL 運算子所傳回的資料列集。對於基本的 MDX 查詢和群組所傳回的查詢相當少量的資料 (例如藥中),結果集永遠必須建立在低於 10 秒,通常會在 5 秒,不受影響的 cube 大小。如果查詢需要較長時間,您可以使用 「 使用狀況分析精靈 」 來建置更多的彙總。

效能秘訣

以下是一些效能祕訣:

  • SQL Server 會開啟兩個連線到 OLAP 提供者,每次查詢。其中會重複使用的較新的查詢;因此,如果您再次執行命令,則第二個查詢可能更快執行。

  • 若要加快速度,其他維度的群組 (因為您要取得較少的資料)。

  • 當 cube 儲存在關聯式 OLAP (ROLAP) 透過並且有沒有彙總時,會是壞的情況。然後,OLAP 伺服器開啟以取得事實資料表資料列的 SQL Server 的連線。請勿在此情況下使用 SQL Server 分散式的查詢。

  • 如果您只需要從 OLAP 伺服器或 cube 檔案的結果集,,請嘗試重新執行 SQL Server 或多維度查詢直接對 OLAP 伺服器或任何 cube 檔案,藉由使用 OLE DB c + + 應用程式或 ADO(ADO*MD) 應用程式。

  • SQL Server 安裝某些 OLE DB 提供者,和設定那些載入同處理序。MSOLAP 提供者不會安裝 SQL Server,因為它被設定為載入處理序外。Microsoft 強烈建議您變更的是要載入同處理序,為 OLAP 提供者的選項,因為這項設定可以改善您的 OLAP 查詢的效能。若要進行變更,請依照下列步驟執行:

    1. 在 [安全性] 資料夾中,以滑鼠右鍵按一下 [連結伺服器],然後按一下新的連結伺服器。

    2. 做為提供者名稱中,按一下以選取Microsoft OLE DB 提供者 OLAP 服務。

    3. 按一下 [選項]。

    4. 按一下以選取 [允許同處理序。

    5. 按一下 [確定]。

參考

Sp_addlinkedserver的詳細說明如預存程序參數,請參閱 SQL Server 7.0 線上叢書 》。

如需有關設定與使用分散式的查詢的詳細資訊,搜尋sp_addlinkedserver,"Openquery 巨集"、"OPENROWSET",SQL Server 7.0 線上叢書 》 中的相關的主題。

若要瞭解關於 OLAP 技術和 MDX 語法的詳細資訊,請參閱 OLAP 服務線上叢書 》。如需有關使用 OLAP 服務的安全性的資訊,請參閱下列文件的 「 Microsoft 知識庫 」 中的文:

242025如何設定連結伺服器來 OLAP 服務的安全性

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×