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';
mà là.
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ó 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!