Connessione a un server tabulare e a un database esistenti

Si applica a: SQL Server 2016 e versioni successive Analysis Services Azure Analysis Services Power BI Premium

Analysis Services Management Objects (AMO) include diversi spazi dei nomi che possono essere usati per configurare una connessione server. Questo articolo illustra come stabilire una connessione server usando lo spazio dei nomi Microsoft.AnalysisServices.Tabular per i modelli e i database creati con il livello di compatibilità 1200 o superiore.

Per connettersi a un server, il codice deve creare un'istanza di un oggetto Server e quindi chiamare il Connessione su di esso. Dopo la connessione, le proprietà dell'oggetto Server rifletteranno le impostazioni dell'istanza del server corrente.

Per le connessioni di primo livello è possibile usare le classi seguenti:

  • Microsoft.AnalysisServices.Server
  • Microsoft.AnalysisServices.Database
  • Microsoft.AnalysisServices.Tabular.Server
  • Microsoft.AnalysisServices.Tabular.Database

Come si può vedere, due spazi dei nomi forniscono connettività agli oggetti server e di database: lo spazio dei nomi Microsoft.AnalysisServices originale per AMO e il nuovo spazio dei nomi Microsoft.AnalysisServices.Tabular per TOM.

Perché due spazi dei nomi per le stesse operazioni? La risposta si trova a valle, a livello di database e modello, in cui la gerarchia di oggetti diventa specifica della modalità e l'albero del modello è costituito da metadati multidimensionali o tabulari. Per effettuare chiamate nell'albero del modello, viene fornito l'oggetto Server o Database per entrambi i tipi di modello.

Nota

I metadati usati per la definizione del modello e le operazioni sono completamente diversi per le due modalità. Separando il linguaggio DDL (Data Definition Language) in due spazi dei nomi separati, l'esperienza di sviluppo viene semplificata tramite la presentazione solo dell'API necessaria per un tipo di modello specifico.

Anche se il linguaggio DDL è diverso, le connessioni a un server sono le stesse in tutte le modalità, versioni ed edizioni. Il supporto di una connessione al server e al database tramite uno spazio dei nomi consente di scrivere strumenti o script generici che si connettono a qualsiasi istanza del server o database, senza dover conoscere il tipo di modello ospitato nel server. Questa flessibilità illustra le dipendenze tra gli assembly. Per effettuare chiamate al di sotto del livello database (ad esempio, su un modello all'interno di un database tabulare 1200 o su un cubo, una dimensione o un measuregroup all'interno di un database multidimensionale o tabulare 1050-1103), AMO ha una dipendenza da TOM.

Al contrario, TOM non ha dipendenza da AMO. Anche se TOM non può essere usato per esplorare i metadati multidimensionali (cubi), AMO può essere usato per esplorare sia i metadati multidimensionali che i metadati tabulari. Per questo motivo, il primo passaggio per la configurazione del progetto richiede l'aggiunta di riferimenti a tutti gli assembly AMO. Per informazioni dettagliate, vedere Installare, fare riferimento e distribuire la libreria client TOM.

Nota

Le connessioni al server e al database sono basate su classi AMO legacy che ereditano da MajorObject. Anche se gli oggetti principali e secondari non vengono usati in un albero del modello tabulare, la classe MajorObject è visibile come classe di base per gli oggetti Server e Database, indipendentemente dall'API usata per configurare la connessione.

Esempio di codice: connessione al server

Di seguito è riportato un esempio di codice C# che illustra come connettersi a un'istanza locale Analysis Services ed elencarne le proprietà in una finestra della console.

Questo esempio illustra solo alcune delle proprietà di un oggetto Server, ma sono disponibili altre proprietà, tra cui ServerMode e DefaultCompatibilityLevel.

using System; 
using Microsoft.AnalysisServices.Tabular; 

namespace TOMSamples 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            // 
            // Connect to the local default instance of Analysis Services 
            // 
            string ConnectionString = "DataSource=localhost"; 


            // 
            // The using syntax ensures the correct use of the 
            // Microsoft.AnalysisServices.Tabular.Server object. 
            // 
            using (Server server = new Server()) 
            { 
                server.Connect(ConnectionString); 

 
                Console.WriteLine("Connection established successfully."); 
                Console.WriteLine(); 
                Console.ForegroundColor = ConsoleColor.Yellow; 
                Console.WriteLine("Server name:\t\t{0}", server.Name); 
                Console.WriteLine("Server product name:\t{0}", server.ProductName); 
                Console.WriteLine("Server product level:\t{0}", server.ProductLevel); 
                Console.WriteLine("Server version:\t\t{0}", server.Version); 
                Console.ResetColor(); 
                Console.WriteLine(); 
            } 
            Console.WriteLine("Press Enter to close this console window."); 
            Console.ReadLine(); 
        } 
    } 
} 

Quando si esegue questo programma, l'output mostra le proprietà dell'oggetto Server in una finestra della console.

Autenticazione e autorizzazione

Una connessione di server o di database a un server richiede autorizzazioni amministrative, usate per le operazioni di lettura/scrittura e per il passaggio di una richiesta di connessione rappresentata.

Per Windows 2012 e versioni successive, è possibile eseguire il flusso della delega tra domini. In Analysis Services, la delega viene usata solo per i modelli DirectQuery. In caso contrario, le connessioni sono dirette o rappresentate.

Passaggi successivi

Dopo aver stabilito una connessione, un passaggio logico successivo consiste nell'elencare i database esistenti già presenti nel server o creare un nuovo database vuoto. I collegamenti seguenti includono esempi di codice che illustrano entrambe queste attività di base:

Creare e distribuire un database vuoto
Elencare i database esistenti