具有多个数据库的 SSAS 立方体

标签 ssas cube bids olap-cube ssas-2008

我有 3 个具有相同结构但数据不同的数据库,因为它们来自不同的客户端。

现在,我有一个现有的 SSAS 项目。其数据源 View 、多维数据集和维度只能使用或访问一个数据库。

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

diagram

这些可能吗?您能提供见解和一些有用的引用吗?

最佳答案

简单的解决方案 解决此问题的最简单方法是仅使用三个 Analysis Services 数据库。设置很容易,您只需三个结构相同的数据库,并且无需管理多维数据集中的安全性,只需访问多维数据集。它易于管理,并且不易出错,允许用户访问他们不应该看到的数据。由于任何人都不得访问其他公司的数据,因此不需要一个公共(public)多维数据集。

只需使用不同的 Analysis Services 数据库名称将项目部署三次即可。 然后更改已部署数据库的数据源对象,使其指向不同的关系数据库。

第一步,在 Business Intelligence Development Studio 中,右键单击解决方案资源管理器中的项目节点,选择底部条目(“属性”),然后选择“部署”。在这里,您可以输入要部署解决方案的服务器以及数据库名称。关闭对话框后,再次右键单击项目节点,然后选择“部署”。使用三个不同的数据库名称重复此步骤。

然后,在 SQL Server Management Studio 中连接到 Analysis Services 服务器,打开每个数据库,并编辑每个数据库的数据源对象以指向其关系数据库。 之后,重新处理 Analysis Services 数据库。

或者,您也可以在 BIDS 中执行所有操作,即。 e.在更改部署目标数据库和部署之间,更改那里的数据源,并在部署后可能重新处理 Analysis Services 数据库。

如果您认为需要多次更改和部署多维数据集定义,则可能可以使用可以使用“配置管理器”按钮在项目属性对话框中编辑的配置。您将拥有三种配置,每个配置对应一个目标 Analysis Services 数据库。您可以在工具栏的下拉列表中为每个部署选择一种配置,而无需一次又一次地编辑属性。

如果您需要经常执行此操作,我认为通过 XMLA、AMO 或 PowerShell 自动化更改数据库和重新处理多维数据集的步骤并不困难。但要实现这一点,这将是另一个问题。

更复杂的解决方案

如果您确实希望将所有内容都放在一个多维数据集中,那么您必须在数据源 View 中对来自不同源的表进行并集。如果所有三个关系数据库都位于同一个 SQL Server 实例上,您可以将其定义为数据源 View 中的命名查询,或者定义为其中一个数据库中的 View ,甚至可能更好地定义为单独的关系数据库中的 View 或表。数据库。您可以从在同一 SQL Server 实例中运行的另一个数据库访问表或 View ,格式为 NameOfDB.Schema.Tablename

如果这些数据库位于不同的实例上,您可以使用链接服务器。

当然,您必须管理这些不同数据库中的键,以便相同的维度条目具有相同的键,而不同的维度条目具有不同的键。并且您必须在多维数据集中设置安全性,以便任何用户都无法看到不应该看到的数据。

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

关于具有多个数据库的 SSAS 立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22036694/

相关文章:

sql - SSIS 连接错误

SSAS 分区,多少太多了

sql - OLE DB 或 ODBC 错误 : Login failed for user 'NT AUTHORITY\NETWORK SERVICE

sql-server - SSAS MDX WHERE 子句语法 - 从同一层次结构中过滤多个值

ssas - 根据条件对数据透视表进行 MDX 查询

Java 图形2D;切换我拥有的形状对象的绘制顺序?

ssrs-2008 - SSRS BIDS 报告管理器 - 控制

ssas - 将一列中一定百分比的值替换为另一列中的值

mysql - OLAP 多维数据集中的Where - In 子句

visual-studio - 如何在 Visual Studio 中使用像素而不是英寸?