2010-10-15 39 views
5

Tôi có một số đối tượng trong khối lập phương SSAS của tôi, nhiều đối tượng được tạo ra là vô hình. Ví dụ:Đọc các Dịch vụ Phân tích SQL Siêu dữ liệu

CREATE MEMBER CURRENTCUBE.[Measures].[Latency Backcolor] 
AS CASE 
    WHEN [Average Latency] > [Web Alert] THEN 6384849 
    WHEN [Average Latency] > [Web Warn] THEN 4577517 
    ELSE IIF ([measures].[Query count] > NULL, 14876123, null) 
END, VISIBLE = 0; 

đó là không nhìn thấy và:

CREATE MEMBER CURRENTCUBE.[Measures].[Average Latency] 
AS IIF ([Measures].[Query Count] > 0, [Measures].[Total Ms]/[Measures].[Query Count], null), 
     FORMAT_STRING = "#,##0.00000;-#,##0.00000", 
     BACK_COLOR = [Latency Backcolor], 
     VISIBLE = 1, 
     DISPLAY_FOLDER = 'Overall', 
     ASSOCIATED_MEASURE_GROUP = 'Fact Raw FD'; 

.

Tôi đã thử hai phương pháp để thẩm vấn khối lập phương. Đầu tiên, sử dụng không gian tên Microsoft.AnalysisServices.AdomdClient. Ví dụ:

using Microsoft.AnalysisServices.AdomdClient; 

var _connection = new AdomdConnection 
{ 
    ConnectionString = "Data Source=localhost;User ID=me;Password=secret;Initial Catalog=dbname", 
    ShowHiddenObjects = true 
}; 

_connection.Open(); 

CubeDef _cube = _connection.Cubes["MyCube"]; 

// _cube.Measures 

Tôi cũng đã thử không gian tên Microsoft.AnalysisServices. Ví dụ:

using Microsoft.AnalysisServices; 

Server server = new Server(); 
server.Connect("Data Source=localhost;User ID=me;Password=secret"); 

Database database = server.Databases.GetByName("dbname"); 

Cube cube = database.Cubes.FindByName("MyCube"); 

// cube.Dimensions 
// cube.MeasureGroups[].Measures 

Tất cả các điều trên được lấy trực tiếp từ mã làm việc (mặc dù giảm đến mức tối thiểu cho mục đích đặt câu hỏi). Tất cả mọi thứ hoạt động hoàn hảo với một trong hai mã, với ngoại lệ duy nhất mà tôi không thể "nhìn thấy" bất kỳ đối tượng ẩn nào của tôi, chẳng hạn như Measures. Tôi có thể sử dụng MDX thô mà tôi có thể truy xuất từ ​​cơ sở dữ liệu bằng kỹ thuật thứ hai. Phía xuống (nghiêm túc) là tôi sẽ phải phân tích bản thân mình mà sẽ là một tiếng vo vo thực sự. Có là một cách để truy cập các đối tượng thực sự mà không cần phải nhảy qua nhiều vòng.

Cảm ơn!

Trả lời

2

Theo như tôi biết, không có cách nào để có được các biện pháp ẩn với mô hình đối tượng ADOMD. Bạn phải sử dụng XML/A và xử lý XML kết quả.

Một giải pháp khác mà tôi cũng khuyên bạn nên sử dụng Perspectives thay vì các biện pháp che giấu trực tiếp. Như bạn có thể biết hoặc đoán, Perspectives được sử dụng để tạo tập con của khối lập phương bằng cách ẩn thành viên. Bằng cách này, bạn có thể truy cập tất cả các biện pháp với mô hình đối tượng ADOMD và cho phép người dùng của bạn chỉ nhìn thấy các thành viên của khối được bao gồm trong Perspective hiện tại.

Các vấn đề liên quan