2010-08-25 54 views
1

我们的数据库中有一个不断变化的(!),通常会添加新列。我什么时候需要更新报告模型

在这种情况下,报告服务是报告选择的工具吗?

案例1:开发人员将新列添加到报表中使用的表中。使用基于旧表的报告模型创建的旧报告是否仍然有效?案例2:开发人员添加一个新列,并且最终用户希望能够对其进行报告。如果我们更新报告模型,那么基于旧报告模型的旧报告是否仍然有效?或者每当最终用户想要报告新创建的列时,我们是否必须创建新的报告模型?

问候

拉尔斯

回答

4

报告服务也需要变革管理战略。因此,将新列添加到基础数据源的表中并不会影响报告。

如果您想在报表模型中包含新添加的表列,则应更新(而不是从头创建)您的报表模型。更新报告模型会自动将新列插入到模型中,并且不会破坏旧报告。另一方面,如果更改报告模型(如表/列名称或列数据类型等),则更新报告模型不会更新/删除现有项目。您应该在报告模型和受影响的报告中手动更改它们。

因此,就您的情况而言,您不会遇到任何报告服务问题。

这里我添加了Reporting Services/Report Model文档的变更管理部分,强烈建议您阅读它。

变更管理

模型和基于它们 的报告有许多内部和外部的 依赖。因此,您需要 考虑引入到依赖链中的变更 的影响。 基于关系数据的报表模型 源使用GUID属性 标识每个实体,属性和 角色。如上所述,报告 模型生成过程设置了 GUID,这些GUID在每个 代都重新创建。出于这个原因,并且为了保留在报告模型上的编辑 生成新的报告模型,每个 发生变化的时间不是一个选项。 您必须使用现有型号 并使用下面描述的更新选项 手动或通过 进行更新。

语义查询引擎 管理缺少的属性,当他们 对报告处理不重要时。 当安全 属性排除用户看到 报告中的某些属性可能允许其他用户使用 时,此功能可以保持 的运行状态。因此,如果 用户不被允许访问 (如员工家庭电话号码 ),则员工列表报告 将针对该用户运行,但不会显示排除的信息 。当编辑模型以删除 非关键属性时,此 功能对您的优势有效 。尽管报告 可能显示空白字段,但报告 仍将在删除 属性后运行。但是, 查询或报告处理可能是 被模型的其他更改中断。

请记住,如果有任何报告取决于 它,则不应覆盖 从关系型 数据源生成的模型。

架构更改

如果基础架构的变化和 报表模型的实体或属性 受到影响,您可能需要相应地更新 报表模型。要在BIDS中执行 ,请在报告模型菜单上使用自动生成命令 。您也可以从 模型项目的上下文菜单中选择自动生成。通过使用 上下文菜单,您可以选择要更新的模型上的哪个 项目 而不必更新整个 模型。

自动生成过程将 显示信息,警告和提醒 消息。这些消息将显示模型中的所有 项目,即 与基础DSV 不同步,即使这些项目不是 特别包含在为自动生成而选择的项目 中。此 功能可帮助检测潜在的 错误,当运行基于 模型的报告时可能导致不可预知的 错误。

自动更新仅影响 新增项目。自动生成过程将在DSV中添加任何 新实体,属性或角色 ,但不会删除或更改任何实体,属性或角色。 因此,您需要手动管理 更新或删除的项目。在生成 过程结束时显示的消息 将突出显示在所产生的不同步 模型中更新的任何实体, 属性或角色,该角色需要更新为 。您将不得不手动更新 模型或恢复DSV 更改以保持模型到模式 的一致性。

数据源改变

你可以开发和测试模型 开发环境,然后 在数据改变 连接字符串容易部署在生产 环境中的模型DSV使用的源文件 。源数据模式的两个数据 必须相同。

请注意,DSV包含基于实际数据库数据的统计数据 。由于 在“报告模型生成”中的“统计 ”部分中提到,所以这些统计值的值 将驱动在生成模型 期间的一些 算法决策。因此,如果 开发数据库数据是 与 生产数据库数据显着不同,那么可能不会针对最终将使用的数据 优化模型 。

希望得到这个帮助。

+0

太好了,谢谢你的详细解答 – Larsi 2010-08-25 10:53:26

相关问题