适用于: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 模型;否则,直接连接或模拟连接。
后续步骤
建立连接后,逻辑下一步是列出服务器上已有的现有数据库,或者创建新的空数据库。 以下链接包括演示这两个基本任务的代码示例: