作为公司软件的一部分,我们运行工作跟踪服务。报告通常由 SQL Server(标准)报告服务生成,但通常在会议之前需要时等。
随着作业的进展,它们的状态会发生变化,报告的详细信息也会发生变化。由于前端应用程序和数据库的遗留问题,我们没有存储管理人员回顾历史报告所需的尽可能多的里程碑。
经理们经常问“我们能看到 XYZ 上周在哪里吗?” 或诸如“让我们看看 Project1 去年 6 月的表现如何?”之类的东西。但是在 Project1 数据库备份上运行报告都显示 100% 完成,因为它现在已完成。
使用 SQL Server Standard 在日常级别启用历史报告的最佳方法是什么?
理想情况下,如果可能的话,我们希望每天存储 3 个月的 5 个不同的报告?
如果您丢失了历史数据(即它被覆盖而不是存储为交易历史),那么您将无法重建历史状态 - 句号。但是,有一些方法可以解决这个问题。
构建一个自动化流程,通过 SSRS 或其他机制查询系统,并将历史报告保存到某个地方的存档中。SSRS 导出一个 Web 服务 API,允许您运行报告(必要时参数化),然后将输出保存到文件中。这可以由任何能够消耗它的东西来操作。
构建一个 ETL 流程,该流程获取数据的快照并将其与之前的快照位置进行比较。在检测到更改的地方,可以将它们写出到历史表中。如果您可以选择在源数据库上放置触发器,那么您可以创建写出审计日志信息的触发器。
如果您需要更精细的东西,那么您可以建立一个数据集市 - 对“类型 2 缓慢变化的维度”进行谷歌搜索,以获取有关如何实现此功能的一些想法。您可以根据需要使用 (2) 中描述的变更捕获机制来获取数据。您可以存储交易历史并在报告中重建状态,或者您可以定期对数据及其当时的状态进行快照。
请注意,标准版不支持更改数据捕获。
如果您只希望每天存储报告(而不是数据本身),您可以创建五个报告并设置每日订阅以发送到文件共享。请参阅Reporting Services 中的文件共享传递。
我相信您需要 SSRS 中的参数化报告 - 为您的报告提供日期参数。您将在以下文章中找到有关 SSRS 报告中参数的理论和实践细节以及一些分步教程: