Exécution de commandes sur une source de données analytiques

Après avoir établi une connexion à une source de données analytiques, vous pouvez utiliser un objet AdomdCommand pour exécuter des commandes sur cette source de données et en obtenir les résultats. Ces commandes permettent de récupérer des données via MDX (Multidimensional Expressions), DMX (Data Mining Extensions), voire une syntaxe limitée de SQL. En outre, vous pouvez utiliser des commandes ASSL (Analysis Services Scripting Language) pour modifier la base de données sous-jacente.

Création d'une commande

Avant d'exécuter une commande, vous devez la créer. Pour ce faire, vous pouvez employer deux méthodes différentes :

  • La première méthode consiste à utiliser le constructeur AdomdCommand, qui peut prendre une commande à exécuter au niveau de la source de données, et un objet AdomdConnection sur lequel la commande doit être exécutée.

  • La deuxième méthode fait appel à la méthode CreateCommand de l'objet AdomdConnection.

Le texte de la commande à exécuter peut être interrogé et modifié à l'aide de la propriété CommandText. Les commandes que vous créez ne retournent pas nécessairement de données après avoir été exécutées.

Exécution d'une commande

Après avoir créé un objet AdomdCommand, votre commande peut employer plusieurs méthodes Execute pour effectuer diverses actions. Le tableau ci-dessous répertorie certaines de ces actions.

Pour

Utiliser la méthode

Retourner les résultats sous forme de flux de données

ExecuteReader pour retourner un objet AdomdDataReader

Retourner un objet CellSet

ExecuteCellSet

Exécuter des commandes qui ne retournent pas de lignes

ExecuteNonQuery

Retourner un objet XMLReader qui contient les données dans un format compatible XMLA (XML for Analysis)

ExecuteXmlReader

Exemple d'exécution d'une commande

Cet exemple utilise l'objet AdomdCommand pour exécuter une commande XMLA qui traitera le cube Adventure Works DW sur le serveur local, sans retourner de données.

        void ExecuteXMLAProcessCommand()
        {
            //Open a connection to the local server
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command, and assign it an XMLA command to process the cube.
            AdomdCommand cmd = conn.CreateCommand();
            cmd.CommandText = "<Process xmlns=\"https://schemas.microsoft.com/analysisservices/2003/engine\">\r\n" +
  @"<Object>
    <DatabaseID>Adventure Works DW Standard Edition</DatabaseID>
    <CubeID>Adventure Works DW</CubeID>
  </Object>
  <Type>ProcessFull</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>";

            //Execute the command
            int result = cmd.ExecuteNonQuery();

            //Close the connection
            conn.Close();
        }