代码之家  ›  专栏  ›  技术社区  ›  Larsi

我什么时候需要更新报表模型

  •  1
  • Larsi  · 技术社区  · 14 年前

    有一个不变的变化!!)在我们的数据库中,经常添加新列。

    在这种情况下,Reporting Services是否是用于报告的工具?

    案例1:开发人员向报表中使用的表添加一个新列。使用基于旧表的报表模型创建的旧报表是否仍然有效?

    案例2:开发人员添加了一个新的列,最终用户希望能够报告它。如果我们更新报表模型,基于旧报表模型的旧报表是否仍然有效?还是每次最终用户想要报告新创建的列时都必须创建一个新的报告模型?

    当做

    拉尔斯

    1 回复  |  直到 14 年前
        1
  •  4
  •   orka    14 年前

    ReportingServices需要变更管理策略。因此,向基础数据源中的表添加新列不会影响报表。

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

    因此,在您的案例中,您不会对ReportingServices有任何问题。

    我在这里添加了ReportingServices/报表模型文档的变更管理部分,强烈建议您阅读它。

    变更管理

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

    语义查询引擎 管理缺少的属性 对报表处理不重要。 此功能可以保留 安全时运行的报告 属性阻止用户看到 报告中的一些属性可能 允许其他用户使用。因此,如果 不允许用户访问字段 如员工家庭电话 编号,员工名单报告 将为该用户运行,但不会 显示排除的信息。这个 功能对您有利 当编辑模型以删除 非关键属性。报告 删除后仍将运行 一个属性,尽管报告 可能显示空白字段。然而, 查询或报表处理可以 被模型的其他更改打断。

    请记住,不应覆盖 由关系生成的模型 任何报表依赖的数据源 它。

    模式变化

    如果基础架构更改并且 报表模型实体或属性 受影响,您可能需要更新 相应的报告模型。这样做 在投标中,使用 自动生成 命令 在报告模型菜单上。你可以 也选择 自动生成 从 模型项的上下文菜单。通过使用 上下文菜单,您可以选择 要更新的模型上的项 不需要更新整个 模型。

    自动生成过程将 显示信息、警告和警报 信息。这些消息将显示所有 模型中的项 与基础DSV不同步, 即使这些物品不是 具体包括在项目中 选择自动生成。这个 功能有助于检测潜力 可能导致不可预测的错误 运行基于的报表时出错 模型。

    自动更新影响 仅限新添加的项目。这个 自动生成过程将添加 找到新的实体、属性或角色 在DSV中,但不会删除或 更改任何实体、属性或角色。 因此,您需要手动管理 更新或删除的项目。消息 在一代人的最后 流程将突出显示任何实体, 属性或角色 更新结果不同步 模型。您必须更新 手动建模或恢复DSV 将模型维护为架构的更改 一致性。

    数据源更改

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

    请注意,DSV包含统计信息 基于实际数据库数据。AS 在“统计”一节中提到 在报表模型生成中,“值 在这些统计数据中 模型中的算法决策 世代。因此,如果 开发数据库数据是 明显不同于 生产数据库数据,模型 可能没有针对数据进行优化 这将最终被使用。

    希望这有帮助。