OpenQuery és MDX With Member: Együtt nem


2005-ös OLAP adatkockákat (Analysis Services 2005) kell lekérdeznem relációs oldalról, és erre a feladatra a linked server-t és az OPENQuery SQL függvényt használom. A függvény tökéletesen működik addig, amíg nem kap olyan MDX lekérdezést, amely tartalmazza a WITH MEMBER kulcsszót. Ekkor a következő hibaüzenetet adja:

Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "MSOLAP" for linked server "LINKED_OLAP" reported an error. The provider did not give any information about the error. Msg 7321, Level 16, State 2, Line 1 An error occurred while preparing the query "WITH MEMBER [Measures].[FiscalMonthID] AS '[Fiscal Time].[Month].CURRENTMEMBER.MEMBER_KEY' SELECT {[Measures].[FiscalMonthID]} ON COLUMNS , [Fiscal Time].[Fiscal Time].[Month].members ON ROWS FROM [Sales]" for execution against OLE DB provider "MSOLAP" for linked server "LINKED_OLAP".

 

(A lekérdezés Management Studio-ból tökéletesen fut. 2000-es OLAP kockát SQL 2005-ből - ugyanígy OPENQuery segítségével, WITH MEMBER-rel - le tudom kérdezni, de a 2005-ös kockát már nem)

Most olvastam - ha hinni lehet e cikk írójának - , hogy ez egy bug, ami az SP1-ben lesz javítva.

Alternatívák keresése...

Az SQL 2005 Integration Services (SSIS) lehetőséget biztosít arra, hogy akármilyen OLE DB adatforrást, - igy egy OLAP adatbázist is - le tudjunk kérdezni. (Data flow task-ban ki kell választani az OLE DB adatforrások közül a "Microsoft OLE DB Provider for Analysis Services 9.0"-t, a "data access mode"-ból az "SQL Command"-ot és az "SQL Command Text" rublikába be kell írnunk az MDX lekérdezést).

Így le tudtam kérdezni SSIS-ből az OLAP adatkokát, ha az MDX lekérdezés nem tartalmazta a WITH MEMBER kulcsszót. Ha tartalmazta, a következő hibaüzenetet kaptam:

Error at Data Flow Task [OLE DB Source [1]]: An OLE DB error has occurred. Error code: 0x80004005.An OLE DB record is available. Source: "Microsoft OLE DB Provider for Analysis Services 2005" Hresult: 0x80004005 Description: "Query (4, 2) The member '[FiscalMonthID]' was not found in the cube when the string, [Measures].[FiscalMonthID], was parsed.".

 

Megpróbálkoztam azzal is, hogy a WITH Member-es lekérdezést subselect-be foglaltam. Mindhiába mert a subselect nem tartalmazhat WITH MEMBER-t. A SubCube-bal hasonló a helyzet.

Elválasztó

Már készül a következő cikk. Kérjen értesítést a megjelenéséről itt.

|