Rappresentazione del database(tabulare)

In modalità tabulare il concetto di database è simile a quei concetti nel motore relazionale e nei modelli multidimensionali; il database è il contenitore di tutti gli oggetti nel modello tabulare.

Rappresentazione di un database

Il database è il posto dove si trovano tutti gli oggetti che formano un modello tabulare. All'interno del database lo sviluppatore trova oggetti come connessioni, tabelle, ruoli e molti altro ancora.

Database in AMO

Quando si utilizza AMO (Analysis Management Objects) per gestire un database modello tabulare, l'oggetto Database ha una corrispondenza uno-a-uno in AMO (Analysis Management Objects) con l'oggetto logico del database in un modello tabulare.

[!NOTA]

Per accedere a un oggetto di database, in AMO (Analysis Management Objects) l'utente deve avere accesso a un oggetto server e connettersi.

Database in ADOMD.Net

Quando si utilizza ADOMD per consultare ed eseguire una query su un database modello tabulare, il senso dell'utilizzo o della connessione a un database specifico si ottiene mediante l'oggetto AdomdConnection.

È possibile connettersi direttamente a un determinato database utilizzando il seguente frammento di codice:

using ADOMD = Microsoft.AnalysisServices.AdomdClient;
…
   ADOMD.AdomdConnection currrentCnx = new ADOMD.AdomdConnection("Data Source=<<server\instance>>;Catalog=<<database>>");
   currrentCnx.Open();
…

Inoltre, tramite un oggetto connessione esistente (che non è stato chiuso) è possibile passare dal database corrente ad un altro a propria scelta come mostrato nel seguente frammento di codice:

   currentCnx.ChangeDatabase("myOtherDatabase");

Database in AMO

Quando si utilizza AMO per gestire un oggetto di database, si inizia prima con un oggetto Server e quindi si cerca il database nella raccolta dei database o si crea un nuovo database aggiungendolo alla raccolta.

Nel frammento di codice seguente vengono illustrati i passaggi per connettersi a un server e per creare un database vuoto, dopo avere verificato che il database non esista già:

AMO.Server CurrentServer = new AMO.Server();
try
{
    CurrentServer.Connect(currentServerName);
}
catch (Exception cnxException)
{
    MessageBox.Show(string.Format("Error while trying to connect to server: [{0}]\nError message: {1}", currentServerName, cnxException.Message), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
newDatabaseName = DatabaseName.Text;
if (CurrentServer.Databases.Contains(newDatabaseName))
{
    return;
}
try
{
    AMO.Database newDatabase = CurrentServer.Databases.Add(newDatabaseName);
    
    CurrentServer.Update();
}
catch (Exception createDBxc)
{
    MessageBox.Show(String.Format("Database [{0}] couldn't be created.\n{1}", newDatabaseName, createDBxc.Message), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Error);
    newDatabaseAvailable = false;
}

Se si desidera inoltre comprendere nella pratica le modalità di utilizzo di AMO per creare e modificare le rappresentazioni di database, vedere il codice sorgente dell'esempio AMO2Tabular, nello specifico nel file di origine Database.cs. L'esempio è disponibile all'indirizzo Codeplex. Nota importante sul codice: il codice viene fornito solo come supporto ai concetti logici illustrati in questo argomento e non deve essere utilizzato in un ambiente di produzione né per altri scopi se non quello formativo.