连接到现有的表格服务器和数据库

适用于:SQL Server 2016 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

AMO) (Analysis Services 管理对象包括多个可用于设置服务器连接的命名空间。 本文介绍如何使用 Microsoft.AnalysisServices.Tabular 命名空间为在 1200 或更高兼容级别创建的模型和数据库建立服务器连接。

若要连接到服务器,代码必须实例化 Server 对象,然后对其进行调用 Connect 方法。 连接后,Server 对象的属性将反映当前服务器实例的设置。

以下类可用于顶级连接:

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

可以看到,有两个命名空间提供与服务器和数据库对象的连接:用于 AMO 的原始 Microsoft.AnalysisServices 命名空间和 TOM 的新 Microsoft.AnalysisServices.Tabular 命名空间。

为什么为相同的操作使用两个命名空间? 答案位于下游的数据库和模型级别,其中对象层次结构变为特定于模式,模型树由多维或表格元数据组成。 若要在模型树中调用,请为这两种模型类型提供 Server 或 Database 对象。

注意

对于这两种模式,用于模型定义和操作的元数据完全不同。 通过将数据定义语言 (DDL) 分隔为两个单独的命名空间,可以通过仅呈现特定模型类型所需的 API 来简化开发体验。

尽管 DDL 不同,但与服务器的连接在所有模式、版本和版本中都是相同的。 通过命名空间支持服务器和数据库连接,可以编写连接到任何服务器实例或数据库的通用工具或脚本,而无需知道服务器上托管的模型类型。 这种灵活性解释了程序集之间的依赖关系。 例如,为了在数据库级别以下 (调用表格 1200 数据库中的模型,或者在多维或表格 1050-1103 数据库) 中的 Cube、Dimension 或 MeasureGroup 上调用,AMO 依赖于 TOM。

相比之下,TOM 不依赖于 AMO。 尽管 TOM 不能用于浏览多维元数据 (多维数据集) ,但 AMO 可用于浏览多维元数据和表格元数据。 因此,设置项目的第一步需要添加 对所有 AMO 程序集的引用。 有关详细信息 ,请参阅安装、引用和分发 TOM 客户端库

注意

服务器和数据库连接基于继承自 MajorObject 的旧 AMO 类。 尽管表格模型树中不使用主要对象和次要对象,但 MajorObject 类作为 Server 和 Database 对象的基类可见,无论你使用哪个 API 来设置连接。

代码示例:服务器连接

下面是一个 C# 代码示例,演示如何连接到本地 Analysis Services 实例并在控制台窗口中列出其属性。

此示例仅显示 Server 对象的一些属性,但还有其他可用属性,包括 ServerMode 和 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(); 
        } 
    } 
} 

运行此程序时,输出在控制台窗口中显示 Server 对象的属性。

身份验证和授权

与服务器的服务器或数据库连接需要管理权限,用于读写操作以及传递模拟的连接请求。

对于 Windows 2012 及更高版本,委托可以跨域流动。 在 Analysis Services 中,委派仅用于 DirectQuery 模型;否则,直接连接或模拟连接。

后续步骤

建立连接后,逻辑下一步是列出服务器上已有的现有数据库,或者创建新的空数据库。 以下链接包括演示这两个基本任务的代码示例:

创建和部署空数据库
列出现有数据库