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
Une fois que vous avez 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 |
|
Exécuter des commandes qui ne retournent pas de lignes |
|
Retourner un objet XMLReader qui contient les données dans un format compatible XMLA (XML for Analysis) |
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();
}