我们的数据库中存在不断变化(!),通常会添加新列。
在这种情况下,报告服务是否可以选择报告工具?
案例1:开发人员向报表中使用的表添加新列。使用基于旧表的报表模型创建的旧报表是否仍然可用?
案例2:开发人员添加新列,最终用户希望能够对其进行报告。如果我们更新报表模型,那么基于旧报表模型的旧报表是否仍然有效?或者,每当最终用户想要报告新创建的列时,我们是否必须创建新的报告模型?
此致
拉斯
答案 0 :(得分:4)
报告服务需要变革管理策略。因此,向基础数据源中的表添加新列不会影响报告。
如果要在报表模型中包含新添加的表列,则应更新(而不是从头开始创建)报表模型。更新报告模型会自动将新列插入模型,并且不会破坏旧报告。另一方面,如果在基础源中更改现有项(如表/列名或列数据类型等),则更新报表模型不会更新/删除现有项。您应该在报告模型和受影响的报告中手动更改它们。
因此,在您的情况下,报告服务不会有任何问题。
我在这里添加了Reporting Services / Report Model文档的更改管理部分,强烈建议您阅读它。
变更管理
模型和基于它们的报告 有很多内部和外部 依赖。因此,你需要 考虑变化的影响 引入依赖链。 根据关系数据报告模型 sources使用GUID属性 识别每个实体,属性和 角色。如上所述,该报告 模型生成过程设置 GUID,在每个GUID重新创建 代。出于这个原因和 保留报表模型的编辑, 每个都生成一个新的报告模型 发生变化的时间不是一种选择。 您必须使用现有模型 并手动或通过更新它 使用描述的更新选项 下面。
语义查询引擎 管理缺少的属性 报告处理并不重要。 此功能可以保留 报告在安全时运行 属性阻止用户查看 报告中的某些属性可能 被允许给其他用户。因此,如果一个 不允许用户访问字段 如员工家庭电话 编号,员工清单报告 将为该用户运行但不会 显示排除的信息。这个 功能对您有利 编辑模型时删除a 非关键属性。那个报告 删除后仍会运行 一个属性,虽然是报告 可能会显示一个空白字段。然而, 查询或报告处理即可 被模型的其他变化打破了。
请记住,你不应该覆盖 从关系生成的模型 任何报告依赖的数据源 它
架构更改
如果底层架构发生了变化,那么 报告模型实体或属性 受影响,您可能需要更新 相应的报告模型。这样做 在BIDS中,使用自动生成命令 在“报告模型”菜单上。您可以 也可以从中选择自动生成 模型项的上下文菜单。通过使用 上下文菜单,您可以选择哪个 要更新的模型上的项目 无需更新整个 模型。
自动生成过程将会 显示信息,警告和警报 消息。这些消息将显示所有 模型中的项目 与底层DSV不同步, 即使这些项目不是 特别包括在该项目中 选择自动生成。这个 功能有助于发现潜力 错误比可能导致不可预测 基于的运行报表时出错 该模型。
自动更新会影响 仅新添加的项目。该 自动生成过程将添加任何 找到新的实体,属性或角色 在DSV中,但不会删除或 更改任何实体,属性或角色。 因此,您需要手动管理 更新或删除的项目。消息 在一代结束时显示 过程将突出显示任何实体, 属性或需要的角色 由此导致的不同步更新 模型。你将不得不更新 手动建模或恢复DSV 更改以维护模型到模式 相干性。
数据源更改
您可以开发和测试您的模型 然后是一个开发环境 在生产中部署模型 环境很容易改变 数据源中的连接字符串 DSV使用的文件。这两个数据 源模式必须相同。
请注意,DSV包含统计信息 基于实际的数据库数据。如 在“统计数据”一节中提到 在报告模型生成中,“价值 这些统计数据会推动一些 模型中的算法决策 代。因此,如果 开发数据库数据是 显着不同于 生产数据库数据,模型 可能没有针对数据进行优化 最终将被使用。
希望得到这个帮助。