Компонент для обработки куба - PullRequest
3 голосов
/ 06 мая 2010

как нам обработать куб или получить доступ к базе данных OLAP через ASP.Net с кодом C #? Какой компонент должен использоваться в C # .Net для подключения базы данных OLAP или действий процесса в Сервисах anaysis?

Ответы [ 4 ]

12 голосов
/ 06 мая 2010

Для обработки используйте библиотеку Microsoft.AnalysisServices, пример кода выглядит так:

    Server server = new Server();
    server.Connect(cubeConnectionString);

    Database database = server.Databases.FindByName(databaseName);
    Cube cube = database.Cubes.FindByName(cubeName);

    cube.Process(ProcessType.ProcessFull);

Для запросов используйте библиотеку Microsoft.AnalysisServices.AdomdClient, пример кода выглядит следующим образом:

    using (Adomd.AdomdConnection adomdConnection = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection())
    {
        adomdConnection.ConnectionString = cubeConnectionString;
        Adomd.AdomdCommand adomdCommand = new Microsoft.AnalysisServices.AdomdClient.AdomdCommand();
        adomdCommand.Connection = adomdConnection;
        adomdCommand.CommandText = mdxQuery;
        adomdConnection.Open();
        cellSet = adomdCommand.ExecuteCellSet();
        adomdConnection.Close();
    }

Обратите внимание, что два пространства имен перекрываются, поэтому вам может понадобиться псевдоним, если вы используете их в одном месте.

http://msdn.microsoft.com/en-US/library/ms124924(v=SQL.90).aspx

http://msdn.microsoft.com/en-us/library/ms123483(v=SQL.90).aspx

1 голос
/ 30 сентября 2014

Вы должны обрабатывать базу данных, а не куб. Потому что куб имеет только меры, а не размеры внутри. Это может привести к некоторым конфликтам.

Чтобы обработать все, кубы и измерения, вы должны обработать всю базу данных:

Server server = new Server();
server.Connect(cubeConnectionString);

Database database = server.Databases.FindByName(databaseName);

database.Process(ProcessType.ProcessFull);
0 голосов
/ 26 июня 2014

Ответьте за это уже поделился выше, но просто поделился, что я тоже использовал тот же Microsoft.AnalysisServices по API, ссылаясь на пример проекта, загруженный из здесь , чтобы обработать куб из C #, но , когда данные измерения меняется, тогда вам нужно обработать базу данных, а не куб .

Также вы можете использовать свойство EffectiveUserName строки подключения, когда идентификация конечного пользователя должна быть олицетворена на сервере.

ПРИМЕЧАНИЕ: Чтобы использовать свойство EffectiveUserName, вызывающая сторона должна иметь административные разрешения в службах Analysis Services.

0 голосов
/ 18 апреля 2013

Этот пример был сделан с Visual Studio Express 2012 и копией Ms SQL 2012 за 44 доллара (слава Богу, что Microsoft предоставила так много функциональности за такие небольшие деньги). ОС была Win 8 pro.

    using System.Collections.Generic;
  using System.Linq;
   using System.Text;
 using System.Threading.Tasks;
 //the next 2 using's had to be downloaded and "Add Reference"d for Visual Studio Express 2012
 using Microsoft.AnalysisServices;
 using Microsoft.AnalysisServices.AdomdClient;
 using System.Windows.Forms;
 using System;
 using System.Data;
 using System.Drawing;
 namespace SSASDataview
 {
         partial class Form1
   {
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }
    private void RunSSAS(object sender, EventArgs e)
    {
        //i don't think  Dataset is in the Analysis Services directives
        DataSet ds = new DataSet();
        // provider is the constant olap.  datasource is the same server name you provide for Mgmt Studio or localhost
        // initial catalog is tricky and important.  It is not a standard ms sql database you see in Management Studio,
        // even if your cube was create with tables from a particular database.
        // the only place I was able to see "initial catalog" value was a File -> Open -> Analysis Services Database in 2012 Management Studio
        // it was also the name of the VS2010 solution I used to create the cube.
        AdomdConnection myconnect = new AdomdConnection(@"provider=olap;initial catalog=GLCubeThree;datasource=localhost");
        AdomdDataAdapter mycommand = new AdomdDataAdapter();
        mycommand.SelectCommand = new AdomdCommand();
        mycommand.SelectCommand.Connection = myconnect;
        // this query was created by the "Browser" you see for an Analysis Services project 
        // if you poke around the icons on the browser table the Design Mode icon will give you the cube query
        // I think it's an MDX query, threre are also xml queries you can run with adomd
        mycommand.SelectCommand.CommandText = "SELECT NON EMPTY { [Measures].[Per Balance] } ON COLUMNS, NON EMPTY { ([Gltime].[Fisc Per].[Fisc Per].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( { [Gltime].[Fisc Per].&[201301], [Gltime].[Fisc Per].&[201302], [Gltime].[Fisc Per].&[201307] } ) ON COLUMNS FROM [GL Cube]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS";
        myconnect.Open();
        mycommand.Fill(ds, "tbl");
        myconnect.Close();
        // the below assigns the results of the cube query to a dataGridView
        // if you drag a dataGridView control to your pallete it will create exactly
        // what you need for the line below to work.
        // your project type has to be a Window Forms Applications
        // this code shown here is in the default Form1.Designer.cs not Form1.cs
        dataGridView1.DataSource = new DataView(ds.Tables[0]);


    }
    private void Quit_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    #region Windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>

    #endregion

    private System.Windows.Forms.DataGridView dataGridView1;
    private System.Windows.Forms.Button runssas;
    private System.Windows.Forms.Button quit;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...