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

Après avoir établi une connexion à une source de données analytique, vous pouvez utiliser un AdomdCommand objet pour exécuter des commandes et retourner des résultats à partir de cette source de données. Ces commandes peuvent récupérer des données à l’aide d’expressions multidimensionnelles (MDX), d’extensions d’exploration de données (DMX) ou même d’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. Vous pouvez créer une commande à l’aide de l’une des deux méthodes suivantes :

  • La première méthode utilise le AdomdCommand constructeur, qui peut prendre une commande pour s’exécuter sur la source de données et un AdomdConnection objet sur lequel exécuter la commande.

  • La deuxième méthode utilise la CreateCommand méthode de l’objet AdomdConnection .

Le texte de la commande à exécuter peut être interrogé et modifié à l’aide de la CommandText propriété. Les commandes que vous créez n’ont pas besoin de retourner des données après leur exécution.

Exécution d’une commande

Une fois que vous avez créé un AdomdCommand objet, il existe plusieurs Execute méthodes que votre commande peut utiliser pour effectuer différentes actions. Le tableau suivant répertorie certaines de ces actions.

À Utiliser cette méthode
Retourner les résultats sous la forme d’un flux de données ExecuteReader pour renvoyer un AdomdDataReader objet
Retourner un CellSet objet ExecuteCellSet
Exécuter des commandes qui ne retournent pas de lignes ExecuteNonQuery
Retourner un objet XMLReader qui contient les données dans un format xml for Analysis (XMLA) conforme ExecuteXmlReader

Exemple d’exécution d’une commande

Cet exemple utilise la AdomdCommand commande XMLA qui traite 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=\"http://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();
        }