使用 ADOMD.NET 中的結構描述資料列集
當您需要的中繼資料比 ADOMD.NET 物件模型所提供的還要多時,ADOMD.NET 提供的功能,可擷取完整範圍的 XML for Analysis (XMLA)、OLE DB、OLE DB for OLAP 以及 OLE DB for Data Mining 結構描述資料列集:
XML for Analysis 中繼資料
XML for Analysis 結構描述資料列集提供擷取有關伺服器低階資訊的方法。 可用的資訊包括伺服器上可用的資料來源、提供者保留的關鍵字、提供者支援的常值等等。 您甚至可以使用 XML for Analysis 結構描述資料列集,以探索提供者支援的所有結構描述資料列集。如需詳細資訊,請參閱<XML for Analysis 結構描述資料列集>。
OLE DB 中繼資料
OLE DB 結構描述資料列集提供業界標準方法,可從各種提供者擷取資訊。如需詳細資訊,請參閱<OLE DB 結構描述資料列集>。
OLAP 中繼資料
提供給分析資料來源的結構描述資訊,包括分析資料來源中可用的資料庫或是目錄、在資料庫中的 Cube 與採礦模型、在資料來源的 Cube 所存在的角色等等。如需詳細資訊,請參閱<OLE DB for OLAP 結構描述資料列集>。
資料採礦中繼資料
除了 OLAP 中繼資料之外,還可以使用結構描述資料列集來擷取資料採礦中繼資料。 可用的資料列集會公開資料庫中可用的資料採礦模型、可用的採礦演算法、演算法所需的參數、採礦結構等相關資訊。如需詳細資訊,請參閱<資料採礦結構描述資料列集>。
對於這些不同的結構描述資料列集,您可以使用 AdomdConnection 物件的 GetSchemaDataSet 方法傳遞 GUID 或 XMLA 名稱,以從資料列集擷取中繼資料。
透過傳遞 GUID 擷取中繼資料
AdomdSchemaGuid 類別包含的欄位清單,代表提供者與分析資料來源最常支援的結構描述資料列集。 若要從提供者或分析資料來源擷取一般和提供者特定的中繼資料,可以透過下列其中一個方法,來使用 AdomdSchemaGuid 物件中所含的 GUID:
[!附註]
ADOMD.NET 資料提供者透過特定提供者與分析資料來源所提供的功能,來公開結構描述資訊。 每個提供者與資料來源可能會提供不同的中繼資料。
透過傳遞 XMLA 名稱以擷取中繼資料
下列方法將 XMLA 結構描述名稱當成引數,該名稱識別要傳回的結構描述資訊以及對那些傳回之資料行的限制陣列。
AdomdConnection.GetSchemaDataSet(String, AdomdRestrictionCollection)
AdomdConnection.GetSchemaDataSet(String, AdomdRestrictionCollection, Boolean)
AdomdConnection.GetSchemaDataSet(String, String, AdomdRestrictionCollection)
AdomdConnection.GetSchemaDataSet(String, String, AdomdRestrictionCollection, Boolean)
在這些方法中,每個都會傳回使用結構描述資訊擴展的 DataSet 物件之執行個體。 DataSet 物件是來自 Microsoft .NET Framework 類別庫的 System.Data 命名空間。
範例
在下列範例中,GetActions 函數使用連接、Cube 名稱、座標和座標類型,來擷取 MDSCHEMA_ACTIONS 資料列集,並傳回選取座標上可用的動作。
//The following function can be called with the following data:
//ae.GetActions(conn, "Adventure Works","[Geography].[City]",6 );
//This would return a DataSet containing the actions available for cells
//in the Adventure Works cube on [Geography].[City].
private System.Data.DataSet GetActions(AdomdConnection Connection, string Cube, string Coordinate, int CoordinateType)
{
//Create a restriction collection to restrict the schema information to be returned.
AdomdRestrictionCollection restrictions= new AdomdRestrictionCollection();
restrictions.Add("CUBE_NAME", Cube);
restrictions.Add("COORDINATE", Coordinate);
restrictions.Add("COORDINATE_TYPE", CoordinateType); //6 = Cell coordinate
//Open and return a schema rowset, given the correct restictions
return Connection.GetSchemaDataSet("MDSCHEMA_ACTIONS", restrictions);
}