远程和本地服务器(Analysis Services - 数据挖掘)

数据挖掘需要连接到 SQL Server Analysis Services 实例才能工作。虽然您无需创建联机分析处理 (OLAP) 多维数据集或使用 OLAP 功能即可执行数据挖掘,但是 Analysis Services 引擎提供了诸多优势(如性能和可扩展性),并且数据挖掘可以与 OLAP 共享许多组件。本主题提供了在连接到 SQL Server Analysis Services 的本地或远程实例以创建、处理、部署或查询数据挖掘模型时需要了解的信息。

配置权限和服务器属性

数据挖掘需要对 Analysis Services 数据库的其他权限。大多数数据挖掘属性可以通过“分析服务器属性”对话框(Analysis Services - 多维数据)设置。有关可配置的属性的详细信息,请参阅 Analysis Services 配置属性

下面的服务器属性与数据挖掘有特殊关系:

  • AllowAdHocOpenRowsetQueries 控制对 OLE DB 访问接口的即席访问,该接口直接加载到服务器内存空间。

    重要说明重要提示

    为了提高安全性,建议您将此属性设置为 false。默认值为 false。但是,即使此属性设置为 false,用户仍可以继续创建单独查询,并且可以对允许的数据源使用 OPENQUERY。

  • AllowedProvidersInOpenRowset 指定启用即席访问时的访问接口。通过输入一个以逗号分隔的 ProgID 列表,您可以指定多个访问接口。

  • MaxConcurrentPredictionQueries 控制服务器上由预测引起的负载。默认值 0 允许对 SQL Server Enterprise 执行不受限制的查询,对 SQL Server Standard 最多执行五次并发查询。超出限制的查询将被序列化,并且可能超时。

服务器还提供了控制可使用哪些数据挖掘算法(包括对算法的所有限制)以及所有数据挖掘服务的默认值的其他属性。但是,没有任何设置可以专门控制对数据挖掘存储过程的访问。有关详细信息,请参阅数据挖掘属性

还可以设置允许用户优化服务器并控制客户端使用的安全性的属性。有关详细信息,请参阅功能属性

注意 插件算法只能在 SQL Server Enterprise 中启用。

对数据挖掘对象的编程访问

您可以使用下列对象模型创建与 Analysis Services 数据库的连接和处理数据挖掘对象:

ADO 使用 OLE DB 连接到 Analysis Services 服务器。使用 ADO 时,客户端仅限于架构行集查询和 DMX 语句。

ADO.NET 与其他访问接口相比,可以更好地与 SQL Server 访问接口进行交互。使用数据适配器存储动态行集。使用数据集对象,该数据集对象是作为数据表存储的服务器数据的缓存,可将该服务器数据更新或另存为 XML 格式。

ADOMD.NET 为处理数据挖掘和 OLAP 而优化的托管数据访问接口。ADOMD.NET 速度比 ADO.NET 更快,并且更能有效地利用内存。您还可以通过 ADOMD.NET 检索有关服务器对象的元数据。建议用于客户端应用程序,除非 .NET 不可用。

Server ADOMD 用于在服务器上直接访问 Analysis Services 对象的对象模型。供 Analysis Services 存储过程使用;不能用于客户端。

AMO 替换决策支持对象 (DSO) 的 Analysis Services 的管理接口。与使用其他接口相比,在使用 AMO 时,循环访问对象等操作需要更高的权限。这是因为 AMO 直接访问元数据,而 ADOMD.NET 和其他接口仅访问数据库架构。

浏览和查询模型

使用本地或远程服务器可以执行所有类型的预测,但具有下列限制:

  • 如果使用 Server ADOMD,则可以在不进行连接的情况下使用 DMX 访问该服务器。然后可以将结果直接复制到数据表中。但是,不能将 Server ADOMD 用于远程实例;您只能查询本地服务器。

  • 对于数据挖掘,ADO.NET 不支持命名参数。您必须使用 ADOMD.NET。

  • 通过 ADOMD.NET,您可以传递整个表以将其作为参数使用;因此,您可以使用客户端上的数据或服务器无法使用的数据。您还可以将具有形状的表作为预测输入使用。

使用数据挖掘存储过程

通过 ADOMD.NET,您可以以分层形式浏览模型内容并递归节点。但是,如果根据模型内容创建查询,查询将返回整个模型。若要避免返回过多的行,您可以使用 ADOMD+ 对象模型根据 Analysis Services 编写存储过程。存储过程的一个常见用途是封装查询以便重复使用。

客户端可以使用 CALL 来运行存储过程,包括 Analysis Services 系统存储过程。如果该过程返回数据集,客户端将接收具有嵌套表(包含行)的数据集或数据表。若要编写服务器存储过程,则必须引用 Microsoft.AnalysisServices.AdomdServer 命名空间。有关如何创建和使用存储过程的详细信息,请参阅用户定义函数和存储过程

注意注意

存储过程不能用于更改数据服务器对象的安全性。执行存储过程时,将使用用户的当前上下文来确定对所有服务器对象的访问权限。因此,对于访问的任何数据库对象,用户必须拥有相应权限。

在数据库或服务器之间移动数据挖掘对象

您可以按如下方式在各数据库之间或各 Analysis Services 实例之间移动数据挖掘对象:部署解决方案;备份并还原数据库副本;导出和导入结构与模型。

部署是指这样一个过程:将模型从测试或开发服务器移动到其他服务器,以将模型用于生产、共享模型或将模型嵌入到应用程序中。有关部署 Analysis Services 解决方案的详细信息,请参阅部署(Analysis Services - 多维数据)

备份和还原整个 Analysis Services 数据库是在数据挖掘解决方案依赖于 OLAP 对象的情况下选择的方法。SQL Server 2008 提供了新的备份和还原功能,可以更快、更方便地备份数据库。有关备份的详细信息,请参阅管理备份和还原 (Analysis Services)

导入和导出挖掘模型和结构(使用 DMX 语句)是最简单的移动或备份各关系数据挖掘对象的方法。有关详细信息,请参阅以下主题:

如果指定 INCLUDE DEPENDENCIES 选项,Analysis Services 还将导出所有所需数据源视图的定义,并且将在导入模型或结构时在目标服务器上重新创建数据源视图。完成了模型导入后,请确保对对象设置必需的挖掘权限。

注意注意

您不能使用 DMX 导出和导入 OLAP 模型。如果挖掘模型基于 OLAP 多维数据集,则必须对整个数据库使用 Analysis Services 备份和还原功能或部署功能。