Création et modification d'objets (XMLA)

Les objets principaux peuvent être créés, modifiés et supprimés de manière indépendante. Les objets principaux se composent notamment des objets suivants :

  • Serveurs

  • Bases de données

  • Dimensions

  • Cubes

  • Groupes de mesures

  • Partitions

  • Perspectives

  • Modèles d'exploration de données

  • Rôles

  • Commandes associées à un serveur ou à une base de données

  • Sources de données

Vous pouvez utiliser la commande Create pour créer un objet principal dans une instance de MicrosoftSQL ServerAnalysis Services et la commande Alter pour modifier un objet principal existant dans une instance. Ces deux commandes sont exécutées par la biais de la méthode Execute.

Création d'objets

Lorsque vous créez des objets à l'aide de la méthode Create, vous devez tout d'abord identifier l'objet parent qui contient l'objet Analysis Services à créer. Pour identifier l'objet parent, vous devez fournir une référence d'objet dans la propriété ParentObject de la commande Create. Chaque référence d'objet contient les identificateurs d'objet nécessaires pour identifier de manière unique l'objet parent pour la commande Create. Pour plus d'informations sur les références d'objet, consultez Définition et identification d'objets (XMLA).

Par exemple, vous devez fournir une référence d'objet à un cube pour créer un groupe de mesures pour le cube. La référence d'objet pour le cube dans la propriété ParentObject contient à la fois un identificateur de base de données et un identificateur de cube, car le même identificateur de cube peut très bien être utilisé dans une autre base de données.

L'élément ObjectDefinition contient les éléments ASSL (Analysis Services Scripting Language) qui définissent l'objet principal à créer. Pour plus d'informations sur ASSL, consultez ASSL.

Si vous définissez l'attribut AllowOverwrite de la commande Create à true, vous pouvez remplacer un objet principal existant associé à l'identificateur spécifié. Sinon, une erreur se produit si un objet principal associé à l'identificateur spécifié existe déjà dans l'objet parent.

Pour plus d'informations sur la commande Create, consultez Élément Create (XMLA).

Création d'objets de session

Les objets de session sont des objets temporaires disponibles uniquement pour la session explicite ou implicite utilisée par une application cliente et qui sont supprimés à la fin de la session. Vous pouvez créer des objets de session en définissant l'attribut Scope de la commande Create à Session.

[!REMARQUE]

Lorsque vous utilisez le paramètre Session, l'élément ObjectDefinition peut contenir uniquement les éléments ASSL Dimension, Cube ou MiningModel.

Modification d'objets

Lorsque vous modifiez des objets à l'aide de la méthode Alter, vous devez en premier lieu identifier l'objet à modifier en fournissant une référence d'objet dans la propriété Object de la commande Alter. Chaque référence d'objet contient les identificateurs d'objet nécessaires pour identifier de manière unique l'objet pour la commande Alter. Pour plus d'informations sur les références d'objet, consultez Définition et identification d'objets (XMLA).

Par exemple, vous devez fournir une référence d'objet à un cube pour modifier la structure de ce dernier. La référence d'objet pour le cube dans la propriété Object contient à la fois un identificateur de base de données et un identificateur de cube, car le même identificateur de cube peut très bien être utilisé dans une autre base de données.

L'élément ObjectDefinition contient des éléments ASSL qui définissent l'objet principal à modifier. Pour plus d'informations sur ASSL, consultez ASSL.

Si vous définissez l'attribut AllowCreate de la commande Alter à true, vous pouvez créer l'objet principal spécifié si l'objet n'existe pas. Sinon, une erreur se produit si un objet principal spécifié n'existe pas déjà.

Utilisation de l'attribut ObjectExpansion

Si vous modifiez seulement les propriétés de l'objet principal et que vous ne redéfinissez pas les objets secondaires contenus dans l'objet principal, vous pouvez définir l'attribut ObjectExpansion de la commande Alter à ObjectProperties. La propriété ObjectDefinition ne doit donc contenir que les éléments relatifs aux propriétés de l'objet principal, et la commande Alter laisse les objets secondaires associés à l'objet principal inchangés.

Pour redéfinir les objets secondaires d'un objet principal, vous devez définir l'attribut ObjectExpansion à ExpandFull et la définition d'objets doit inclure tous les objets secondaires contenus dans l'objet principal. Si la propriété ObjectDefinition de la commande Alter n'inclut pas explicitement un objet secondaire contenu dans l'objet principal, cet objet secondaire est supprimé.

Modification d'objets de session

Pour modifier les objets de session créés par la commande Create, définissez l'attribut Scope de la commande Alter à Session.

[!REMARQUE]

Lorsque vous utilisez le paramètre Session, l'élément ObjectDefinition peut contenir uniquement les éléments ASSL Dimension, Cube ou MiningModel.

Création ou modification d'objets subordonnés

Bien qu'une commande Create ou Alter ne crée ou ne modifie qu'un seul objet principal de niveau supérieur, l'objet principal ainsi créé ou modifié peut contenir des définitions dans la propriété ObjectDefinition englobante pour les autres objets principaux ou secondaires qui lui sont subordonnés. Par exemple, si vous définissez un cube, vous spécifiez la base de données parente dans ParentObject. Ensuite, dans la propriété de la définition du cube ObjectDefinition, vous pouvez définir des groupes de mesures pour le cube et, dans chaque groupe de mesures, vous pouvez définir des partitions. Un objet secondaire ne peut être défini que sous l'objet principal qui le contient. Pour plus d'informations sur les objets principaux et secondaires, consultez Objets de bases de données (Analysis Services - Données multidimensionnelles).

Exemples

Description

L'exemple suivant crée une source de données relationnelle qui fait référence à l'exemple de base de données MicrosoftSQL Server intitulé Adventure Works DW.

Code

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
    <ParentObject>
        <DatabaseID>Adventure Works DW</DatabaseID>
    </ParentObject>
    <ObjectDefinition>
        <DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
            <ID>Adventure Works DW</ID>
            <Name>Adventure Works DW</Name>
            <ConnectionString>Data Source=localhost;Initial Catalog=AdventureWorksDW;Integrated Security=True</ConnectionString>
            <ImpersonationInfo>
                <ImpersonationMode>ImpersonateServiceAccount</ImpersonationMode>
            </ImpersonationInfo>
            <ManagedProvider>System.Data.SqlClient</ManagedProvider>
            <Timeout>PT0S</Timeout>
        </DataSource>
    </ObjectDefinition>
</Create>

Description

L'exemple suivant modifie la source de données relationnelle créée dans l'exemple précédent pour définir le délai d'expiration de requête de la source de données à 30 secondes.

Code

<Alter ObjectExpansion="ObjectProperties" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>Analysis Services Project1</DatabaseID>
        <DataSourceID>Adventure Works DW2</DataSourceID>
    </Object>
    <ObjectDefinition>
        <DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
            <ID>Adventure Works DW2</ID>
            <Name>Adventure Works DW2</Name>
            <ConnectionString>Data Source=fr-dwk-02;Initial Catalog=AdventureWorksDW;Integrated Security=True</ConnectionString>
            <ManagedProvider>System.Data.SqlClient</ManagedProvider>
            <Timeout>PT30S</Timeout>
        </DataSource>
    </ObjectDefinition>
</Alter>

Commentaires

L'attribut ObjectExpansion de la commande Alter a été défini à ObjectProperties. Ce paramètre permet à l'élément ImpersonationInfo (objet secondaire) d'être exclu de la source de données définie dans ObjectDefinition. Par conséquent, les informations d'emprunt d'identité de cette source de données restent définies sur le compte de service, comme spécifié dans le premier exemple.