Condividi tramite


Creazione e modifica di oggetti (XMLA)

Gli oggetti principali possono essere creati, modificati ed eliminati in modo indipendente. Di seguito vengono elencati gli oggetti principali:

  • Server

  • Database

  • Dimensioni

  • Cubi

  • Gruppi di misure

  • Partizioni

  • Prospettive

  • Modelli di data mining

  • Ruoli

  • Comandi associati a un server oppure a un database

  • Origini dati

Per creare un oggetto principale in un'istanza di MicrosoftSQL ServerAnalysis Services viene utilizzato il comando Create, mentre la modifica di un oggetto principale esistente in un'istanza viene eseguita tramite il comando Alter. Entrambi i comandi vengono eseguiti tramite il metodo Execute.

Creazione di oggetti

Quando si creano oggetti tramite il metodo Create, è necessario innanzitutto identificare l'oggetto padre che contiene l'oggetto di Analysis Services da creare. Per identificare l'oggetto padre, specificare un riferimento all'oggetto nella proprietà ParentObject del comando Create. Ogni riferimento all'oggetto contiene gli identificatori dell'oggetto necessari per identificare in modo univoco l'oggetto padre per il comando Create. Per ulteriori informazioni sui riferimenti a un oggetto, vedere Definizione e identificazione di oggetti (XMLA).

Si supponga ad esempio che sia necessario fornire un riferimento a un oggetto per un cubo per creare un nuovo gruppo di misure per il cubo stesso. Il riferimento all'oggetto per il cubo nella proprietà ParentObject contiene sia un identificatore di database che un identificatore del cubo poiché lo stesso identificatore del cubo potrebbe essere utilizzato in un database diverso.

L'elemento ObjectDefinition contiene elementi del linguaggio ASSL (Analysis Services Scripting Language) che definiscono l'oggetto principale da creare. Per ulteriori informazioni su ASSL, vedere ASSL.

Se si imposta l'attributo AllowOverwrite del comando Create su true, è possibile sovrascrivere un oggetto principale esistente con l'identificatore specificato. In caso contrario, se un oggetto principale con l'identificatore specificato esiste già nell'oggetto padre si verifica un errore.

Per ulteriori informazioni sul comando Create, vedere Elemento Create (XMLA).

Creazione di oggetti di sessione

Gli oggetti di sessione sono oggetti temporanei disponibili solo nella sessione esplicita o implicita utilizzata da un'applicazione client che vengono eliminati quando la sessione è terminata. Per creare oggetti di sessione, è possibile impostare l'attributo Scope del comando Create su Session.

[!NOTA]

Quando si utilizza l'impostazione Session, l'elemento ObjectDefinition può contenere solo gli elementi ASSL Dimension, Cube o MiningModel.

Modifica di oggetti

Quando si modificano oggetti tramite il metodo Alter, è necessario innanzitutto identificare l'oggetto da modificare specificando un riferimento all'oggetto nella proprietà Oggetto del comando Alter. Ogni riferimento all'oggetto contiene gli identificatori dell'oggetto necessari per identificare in modo univoco l'oggetto per il comando Alter. Per ulteriori informazioni sui riferimenti a un oggetto, vedere Definizione e identificazione di oggetti (XMLA).

Si supponga ad esempio che sia necessario fornire un riferimento a un oggetto per un cubo per modificarne la struttura. Il riferimento all'oggetto per il cubo nella proprietà Object contiene sia un identificatore di database che un identificatore del cubo poiché lo stesso identificatore del cubo potrebbe essere utilizzato in un database diverso.

L'elemento ObjectDefinition contiene elementi ASSL che definiscono l'oggetto principale da modificare. Per ulteriori informazioni su ASSL, vedere ASSL.

Se si imposta l'attributo AllowCreate del comando Alter su true, è possibile creare l'oggetto principale specificato qualora non esista. In caso contrario, se un oggetto principale specificato non esiste si verifica un errore.

Utilizzo dell'attributo ObjectExpansion

Se si modificano solo le proprietà dell'oggetto principale senza ridefinire gli oggetti secondari contenuti in quello principale, è possibile impostare l'attributo ObjectExpansion del comando Alter su ObjectProperties. La proprietà ObjectDefinition deve contenere pertanto solo gli elementi per le proprietà dell'oggetto principale e il comando Alter non modifica gli oggetti secondari associati all'oggetto principale.

Per ridefinire gli oggetti secondari per un oggetto principale, è necessario impostare l'attributo ObjectExpansion su ExpandFull e la definizione dell'oggetto deve includere tutti gli oggetti secondari contenuti in quello principale. Se la proprietà ObjectDefinition del comando Alter non include in modo esplicito un oggetto secondario contenuto in quello principale, l'oggetto secondario non incluso viene eliminato.

Modifica di oggetti di sessione

Per modificare oggetti di sessione creati dal comando Create, impostare l'attributo Scope del comando Alter su Session.

[!NOTA]

Quando si utilizza l'impostazione Session, l'elemento ObjectDefinition può contenere solo elementi ASSL Dimension, Cube o MiningModel.

Creazione o modifica di oggetti subordinati

Sebbene un comando Create o Alter crei o modifichi solo un oggetto principale di livello superiore, l'oggetto principale creato o modificato può includere nella proprietà ObjectDefinition che lo contiene definizioni per altri oggetti principali e secondari subordinati. Se si definisce un cubo, ad esempio, si specifica innanzitutto il database padre in ParentObject, quindi nella definizione del cubo in ObjectDefinition è possibile definire gruppi di misure per il cubo e nei gruppi di misure è possibile definire partizioni per ogni gruppo. Un oggetto secondario può essere definito solo sotto l'oggetto principale che lo contiene. Per ulteriori informazioni sugli oggetti principali e secondari, vedere Oggetti di database (Analysis Services - Dati multidimensionali).

Esempi

Descrizione

Nell'esempio seguente viene creata un'origine dati relazionale che fa riferimento al database di esempio Adventure Works DW di MicrosoftSQL Server.

Codice

<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>

Descrizione

Nell'esempio seguente viene modificata l'origine dati relazionale creata nell'esempio precedente per impostare il timeout per la query per l'origine dati su 30 secondi.

Codice

<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>

Commenti

L'attributo ObjectExpansion del comando Alter era stato impostato su ObjectProperties. Questa impostazione consente di escludere l'elemento ImpersonationInfo, ovvero un oggetto secondario, dall'origine dati definita in ObjectDefinition. Le impostazioni di rappresentazione per tale origine dati rimangono pertanto configurate sull'account del servizio, come specificato nel primo esempio.