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.