13.4 数据挖掘管理
SQL Server联机丛书中详细地论述了大多数的管理信息,通过BI Development Studio或者SQL Server Management Studio的帮助菜单可以访问这些书籍。然而,其中没有充分介绍特定于数据挖掘的一些重要的知识,如服务器配置和数据挖掘安全。
13.4.1 服务器配置
在SQL Server Management Studio中可以修改用来控制服务器行为的变量。要访问服务器的属性,必须在对象资源管理器中连接服务器,然后右击服务器并且从上下文菜单中选择“属性”。通过修改这些属性,可以调整使用服务器的方式,也可以控制客户端如何从安全角度来使用服务器。属性分成两类:基本的(Basic)和高级的(Advanced)。在默认情况下,将只会看到基本的属性。要查看高级的属性,必须在属性窗口底部选中“显示高级(全部)属性”复选框。所有特定于数据挖掘的实体都是以“DataMining”开头的。服务器的属性对话框如图13-3所示。

图13-3 分析服务器属性对话框
通过属性AllowAdHocOpenRowsetQueries和AllowedProvidersInOpenRowset,可以控制在预测或者训练(INSERT INTO)查询期间对OLE DB提供程序的特殊(ad hoc)访问。因为是直接将OLE DB提供程序加载到服务器的内存空间中,所以从理论上来说以下情况是可能发生的:在提供程序中的安全漏洞会在Analysis Services中出现。将AllowAdHocOpenRowsetQueries设置为true可以支持那些不是服务器管理员的用户执行OpenRowset查询,但是却开放了潜在的安全漏洞。如果使用该属性的默认值false,则会限制用户针对某些数据源(用户拥有访问这些数据源的权限)来浏览模型、执行单例查询和执行某些包含OPENQUERY子句的语句。
如果选择允许OPENROWSET特殊访问,则仍然可以限制安全问题的暴露。通过高级属性AllowedProvidersInOpenRowset可以正确地选择加载哪些OLE DB提供程序。该参数的值为通过逗号分隔的提供程序清单,或者可以指定为[All]来指出允许加载所有已安装的提供程序。如果将AllowAdHocOpenRowsetQueries设置为true,则推荐将AllowedProvidersInOpenRowset属性设置为明确允许的提供程序。
通过另一个属性MaxConcurrentPredictionQueries可以控制在服务器上由于预测引起的负载。该属性的默认值是0,表示支持服务器同时处理尽可能多的查询,只要是在已安装的SQL Server Analysis Services版本允许的范围内(对于标准版来说为5,而对于企业版来说没有限制)。发送给服务器的请求中,超过这个数目的请求必须串行处理,并且这些请求可能会超时。
有两个高级属性区用来控制哪些算法是用户可以使用的,以及这些算法的默认参数是什么。第一个属性区是Algorithms,通过该属性区可以控制哪些算法是可用的。例如,如果只希望分析员使用特定的服务器来进行时间序列分析,则可以通过将所有其他算法的Enabled标志设置为0来实现。
第二个属性区Services描述了所有已安装算法的默认值。对这些参数进行更改时,会改变(使用相关算法创建的)所有未来模型的处理。例如,在Microsoft聚类算法上将聚类的数量参数设置为0,将导致算法自动地选择用于预测的最佳聚类个数。如果希望这种行为是默认的行为,则必须将Microsoft聚类算法下的ClusterCount参数设置为0。
SQL Server Management Studio用户界面不支持对插件算法的启用状态和默认参数进行设置。通过使用分析管理对象(Analysis Management Object,AMO),可以编写代码来改变这些属性,在第14章中将对此进行描述。
13.4.2 数据挖掘安全
当“安全”这个词与数据挖掘结合时吸引了不少眼球。Senators Feingold和Wyden写的Data Mining Moratorium Act of 2003一文例证了许多人对这个技术所产生的不信任。因为这一点,所以Analysis Services包含许多选项,这些选项用于控制对于存储在挖掘模型中的信息的访问。可以指派的权限类型如表13-1所示。
提示:
如果为了预测的目的而需要通过XMLA来将模型直接作为Web服务暴露出来,则可以通过指派Read权限而不是Browse权限来保护模型的内容。
在Analysis Services中的安全是基于角色的,也就是,先创建角色,该角色用于定义希望提供的一组权限,然后对用户指派该角色。在角色中的所有用户都拥有该角色的所有权限,并且当使用图13-4中显示的对话框来修改角色的权限时,也会自动更新用户的权限。在BI Development Studio和SQL Server Management Studio中都可以创建和编辑角色。
表13-1 数据挖掘的权限
|
权 限 |
效 果 |
|
Read |
用户可以在挖掘模型上执行预测查询 |
|
Write |
用户可以在模型的内容中更新节点的标题 |
|
Browse |
用户可以访问已学习的模型的内容 |
|
Drillthrough |
用户可以访问经过训练的模型的源数据 |
|
Read Definition |
用户可以查看代表模型元数据的DDL |
|
Process(只适用于挖掘结构) |
用户可以处理挖掘结构 |

图13-4 显示挖掘结构权限的角色属性对话框
注意:
Analysis Services只能够允许权限,而不能够像SQL Server关系引擎一样拒绝权限。所以,用户的权限是用户所属的所有角色的权限的并集。例如,Mary属于Database Processors角色,该角色支持她处理所有的数据库对象但是不能查询这些对象。她也属于Data Miner角色,该角色支持她查询模型但是不能处理这些模型。因此,Mary既拥有处理模型的权限,又拥有查询模型的权限。
另外,权限是嵌套的;角色必须在父对象上拥有相同的权限(如果该权限适用),才可以在目标对象上执行同类型权限的操作。例如,如果使用Data Miners角色,则该角色必须拥有数据库和(包含要查询的挖掘模型的)挖掘结构的Access Read权限以及在模型本身上的权限。
出于安全意识而必须考虑的另一个领域是存储过程和插件算法。虽然用户要安装这两者中的任何一个时都必须是管理员,但是应该确保代码的来源是可靠的,并且确保作者是有安全意识的。





