Erstellen und Ändern von Objekten (XMLA)

Hauptobjekte können unabhängig erstellt, geändert und gelöscht werden. Zu den Hauptobjekten gehören die folgenden Objekte:

  • Server

  • Datenbanken

  • Dimensionen

  • Cubes

  • Measuregruppen

  • Partitionen

  • Perspektiven

  • Miningmodelle

  • Rollen

  • Einem Server oder einer Datenbank zugeordnete Befehle

  • Datenquellen

Sie verwenden den Befehl Create, um ein Hauptobjekt auf einer Instanz von MicrosoftSQL ServerAnalysis Services zu erstellen, und den Befehl Alter, um ein vorhandenes Objekt auf einer Instanz zu ändern. Beide Befehle werden mit der Execute-Methode ausgeführt.

Erstellen von Objekten

Wenn Sie Objekte über die Create-Methode erstellen, müssen Sie zunächst das übergeordnete Objekt identifizieren, das das zu erstellende Analysis Services-Objekt enthält. Sie identifizieren das übergeordnete Objekt, indem Sie einen Objektverweis in der ParentObject-Eigenschaft des Create-Befehls bereitstellen. Jeder Objektverweis enthält die Objektbezeichner, die notwendig sind, um das übergeordnete Objekt für den Create-Befehl zu identifizieren. Weitere Informationen über Objektverweise finden Sie unter Definieren und Identifizieren von Objekten (XMLA).

Beispielsweise müssen Sie einen Objektverweis auf einen Cube bereitstellen, um eine neue Measuregruppe für den Cube zu erstellen. Der Objektverweis für den Cube in der Eigenschaft ParentObject enthält sowohl einen Datenbankbezeichner als auch einen Cubebezeichner, da der gleiche Cubebezeichner potenziell von einer anderen Datenbank verwendet werden könnte.

Das ObjectDefinition-Element enthält ASSL-Elemente (Analysis Services Scripting Language), die das zu erstellende Hauptobjekt definieren. Weitere Informationen über ASSL finden Sie unter ASSL.

Wenn Sie das AllowOverwrite-Attribut des Create-Befehls auf True setzen, können Sie ein vorhandenes Hauptobjekt mit dem gleichen Bezeichner überschreiben. Andernfalls tritt ein Fehler auf, wenn im übergeordneten Objekt bereits ein Hauptobjekt mit dem gleichen Bezeichner vorhanden ist.

Weitere Informationen zum Befehl Create finden Sie unter Create-Element (XMLA).

Erstellen von Sitzungsobjekten

Sitzungsobjekte sind temporäre Objekte, die nur für die explizite oder implizierte Sitzung zur Verfügung stehen, die von einer Clientanwendung verwendet werden. Bei Beendigung der Sitzung werden diese gelöscht. Sie können Sitzungsobjekte erstellen, indem Sie das Scope-Attribut des Befehls Create auf Session festlegen.

HinweisHinweis

Wenn es die Session-Einstellung verwendet, kann das ObjectDefinition-Element nur Dimension-, Cube- oder MiningModel-ASSL-Elemente enthalten.

Ändern von Objekten

Bei der Änderung von Objekten über die Alter-Methode müssen Sie zunächst das zu ändernde Objekt identifizieren, indem Sie einen Objektverweis in der Object-Eigenschaft des Alter-Befehls angeben. Jeder Objektverweis enthält die Objektbezeichner, die notwendig sind, um das Objekt für den Alter-Befehl zu identifizieren. Weitere Informationen über Objektverweise finden Sie unter Definieren und Identifizieren von Objekten (XMLA).

Beispielsweise müssen Sie einen Objektverweis auf einen Cube bereitstellen, um die Struktur eines Cubes zu ändern. Der Objektverweis für den Cube in der Eigenschaft Object enthält sowohl einen Datenbankbezeichner als auch einen Cubebezeichner, da der gleiche Cubebezeichner potenziell von einer anderen Datenbank verwendet werden könnte.

Das ObjectDefinition-Element enthält ASSL-Elemente, die das Hauptobjekt definieren, das geändert werden soll. Weitere Informationen über ASSL finden Sie unter ASSL.

Wenn Sie das AllowCreate-Attribut des Alter-Befehls auf True setzen, können Sie das angegebene Hauptobjekt erstellen, wenn das Objekt nicht existiert. Andernfalls tritt ein Fehler auf, wenn ein angegebenes Hauptobjekt nicht bereits vorhanden ist.

Verwenden des ObjectExpansion-Attributs

Wenn Sie nur die Eigenschaften des Hauptobjekts ändern und nicht Nebenobjekte neu definieren, die im Hauptobjekt enthalten sind, können Sie das ObjectExpansion-Attribut des Alter-Befehls auf ObjectProperties festlegen. Die ObjectDefinition-Eigenschaft muss dann nur die Elemente für die Eigenschaften des Hauptobjekts enthalten, und der Alter-Befehl lässt die zum Hauptobjekt gehörenden Nebenobjekte unverändert.

Um Nebenobjekte für ein Hauptobjekt neu zu definieren, müssen Sie das ObjectExpansion-Attribut auf ExpandFull festlegen, und die Objektdefinition muss alle Nebenobjekte beinhalten, die im Hauptobjekt enthalten sind. Wenn die ObjectDefinition-Eigenschaft des Alter-Befehls nicht explizit ein im Hauptobjekt enthaltenes Nebenobjekt einbindet, wird das nicht eingebundene Nebenobjekt gelöscht.

Ändern von Sitzungsobjekten

Um Sitzungsobjekte, die vom Create-Befehl generiert wurden, zu ändern, legen Sie das Scope-Attribut des Alter-Befehls auf Session fest.

HinweisHinweis

Wenn es die Session-Einstellung verwendet, kann das ObjectDefinition-Element nur Dimension-, Cube- oder MiningModel-ASSL-Elemente enthalten.

Erstellen oder Ändern von untergeordneten Objekten

Obwohl ein Create- oder Alter-Befehl nur das oberste Hauptobjekt erstellt oder ändert, kann das Hauptobjekt, das erstellt oder geändert wird, Definitionen innerhalb der einschließenden ObjectDefinition-Eigenschaft für andere Haupt- und Nebenobjekte enthalten, die ihm untergeordnet sind. Beispielsweise geben Sie bei der Definition eines Cubes die übergeordnete Datenbank in ParentObject an, und innerhalb der Cubedefinition in ObjectDefinition können Sie Measuregruppen für den Cube erstellen, und innerhalb der Measuregruppen können Sie Partitionen für jede Measuregruppe definieren. Ein Nebenobjekt kann nur unter dem Hauptobjekt definiert werden, das es enthält. Weitere Informationen über Haupt- und Nebenobjekte finden Sie unter Datenbankobjekte (Analysis Services - Mehrdimensionale Daten).

Beispiele

Beschreibung

Im folgenden Beispiel wird eine relationale Datenquelle erstellt, die auf die Beispiel-MicrosoftSQL Server-Datenbank Adventure Works DW verweist.

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>

Beschreibung

Im folgenden Beispiel wird die im vorherigen Beispiel erzeugte relationale Datenquelle so geändert, dass der Abfragetimeout der Datenquelle nach 30 Sekunden einsetzt.

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>

Anmerkungen

Das ObjectExpansion-Attribut des Alter-Befehls wurde auf ObjectProperties festgelegt. Diese Einstellung ermöglicht es dem ImpersonationInfo-Element, ein Nebenobjekt aus der in ObjectDefinition definierten Datenquelle auszuschließen. Daher bleiben die Informationen zum Identitätswechsel für die Datenquelle auf "Service Account" festgelegt, wie es im ersten Beispiel angegeben ist.