多个数据库的SSAS立方体

7
我有3个拥有相同结构但引自不同客户的数据库。

现在,我有一个现有的SSAS项目。它的数据源视图、立方体和维度只能使用或访问一个数据库。

  • 我想要能够使用多个具有相同结构的数据库,并创建一个使用它们的Cube。
  • 每个客户也必须能够使用该Cube,但是他们只能看到自己的数据。

diagram

这些是否可以实现?您能否提供一些见解和有用的参考资料?

1个回答

6
简单解决方案 最简单的解决方法是只有三个分析服务数据库。设置很容易,你只需要三个结构相同的数据库,无需在立方体内管理安全性,只需访问立方体即可。它易于管理,难以出错,允许用户访问他们不应该看到的数据。由于不应该允许任何人访问其他公司的数据,因此不需要一个共同的立方体。
只需使用不同的分析服务数据库名称部署您的项目三次。 然后将已部署的数据库的数据源对象更改为指向不同的关系数据库。
对于第一步,在商业智能开发工具中,在“解决方案资源管理器”中右键单击项目节点,选择底部条目(“属性”),然后选择“部署”。在这里,您可以输入要部署解决方案的服务器以及数据库名称。关闭对话框后,再次右键单击项目节点,然后选择“部署”。重复此步骤,使用三个不同的数据库名称。
然后,在 SQL Server 管理工具中连接到您的分析服务服务器,打开每个数据库,并编辑每个数据库的数据源对象,使其指向其关系数据库。 之后,重新处理分析服务数据库。
或者,您也可以在 BIDS 中完成所有操作,即在更改部署目标数据库并部署之间,在那里更改数据源,然后在部署后,可能重新处理分析服务数据库。
如果您假设需要多次更改和部署立方体定义,则可能可以利用配置,在项目属性对话框中使用“配置管理器”按钮进行编辑。您将有三个配置,每个目标分析服务数据库一个。您可以在工具栏中的下拉列表中选择一个配置,无需再次编辑属性即可进行每次部署。
如果您需要经常这样做,我认为很容易通过 XMLA、AMO 或 PowerShell 自动化更改数据库和重新处理立方体的步骤。但要实现这一点,这将是另一个问题。
更复杂的解决方案 如果您确实想要将所有内容放在一个立方体中,那么您将不得不在数据源视图中将来自不同来源的表联合起来。如果所有三个关系数据库都在同一个 SQL Server 实例上,则可以将其定义为数据源视图中的命名查询,或者作为其中一个数据库中的视图,甚至更好地作为单独关系数据库中的视图或表。您可以以NameOfDB.Schema.Tablename的形式访问运行在同一 SQL Server 实例中的另一个数据库中的表或视图。
如果这些数据库位于不同的实例上,则可以使用链接服务器。
当然,您还必须管理这些不同数据库中的键,以使相同的维度条目具有相同的键,不同的维度条目具有不同的键。您还必须在立方体中设置安全性,以使没有用户可以看到不应该看到的数据。

虽然在Analysis Services中可以为不同的表或命名查询使用不同的数据源对象,但实际上每个对象都只使用一个SQL语句发送到该源。而维度需要基于一个数据源视图对象,如一个命名查询、视图或表。对于事实表,您可以使用分区来解决这个问题,但对于维度则不行。


谢谢你的回答,但我只做到了这一步——使用不同的Analysis Services数据库名称部署您的项目三次。我真的很新手。我已经学习了大约3天的立方体和SSAS。您能详细解释一下如何执行您建议的下一步吗?谢谢Frank! - Raii
@Raii 我编辑了我的答案,提供了更详细的步骤说明。 - FrankPl
@FrankPI 我会在后天尝试(我现在没有时间),然后告诉你。谢谢! - Raii
嗨@Frank!我重新阅读了你的解决方案。我想,如果我这样做,那么就会有3个AS DB名称,因此有3个立方体。我需要的是只有一个AS DB立方体,可以访问所有3个数据源(如上所示)。这个想法是拥有一个立方体,可以用来按国家或部署站点对数据进行排序。这可能吗? - Raii
明白了!谢谢。现在我知道从哪里开始了 =) - Raii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接