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

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

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

  • ssas - 具有多个数据库的SSAS多维数据集-LMLPHP

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

    最佳答案

    简易解决方案
    解决此问题的最简单方法是仅拥有三个Analysis Services数据库。安装将很容易,您将只有三个结构相同的数据库,无需管理多维数据集内的安全性,只需访问多维数据集即可。它易于管理,并且难以出错,从而使用户可以访问他们不应该看到的数据。而且,由于不允许任何人访问其他公司的数据,因此不需要一个通用的多维数据集。

    只需使用其他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 或表数据库。您可以使用NameOfDB.Schema.Tablename形式从在同一SQL Server实例中运行的另一个数据库访问表或 View 。

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

    当然,您将必须管理这些不同数据库中的键,以便同一维条目具有相同的键,而不同维条目具有不同的键。而且,您将必须在多维数据集中设置安全性,以便没有用户可以看到不该看到的数据。

    尽管您可以在Analysis Services中为不同的表使用不同的数据源对象,或者在Analysis Services中使用命名的查询,但是每个对象仅使用一个,实际上,这是一条发送到该源的SQL语句。维度需要基于一个数据源 View 对象,例如一个命名查询, View 或表。对于事实表,您可以使用分区来解决这个问题,但是对于维度却不能。

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

    10-09 08:08
    查看更多