交叉检查SQL Server报告

时间:2017-05-09 08:25:55

标签: sql sql-server sql-server-2014 export-to-csv

我每天都有一份报告。我想将此报告的输出发送到csv文件。由于报告的性质,有时可能会丢失一些数据(当作业执行时会生成新数据,因此有时会丢失一些数据,因为这是一项冗长的工作)。

是否有办法每天交叉检查前一天没有丢失的数据 - 可能在每行末尾有一个勾号或十字表示数据尚未导出作为一个csv?

我正在处理敏感信息,因此无法分享任何报告详情。

1 个答案:

答案 0 :(得分:0)

这是一个相当普遍的问题。没有具体细节,很难给出具体的答案 - 但这里有一些我过去使用的解决方案。

通常,此类报告的总数为#34;行 - 您的小部件报告可能按月份,地区,销售人员,产品类型等细分 - 但您通常会销售"总小部件"线。如果这是一个快速查询(您可能需要删除联接和其他优化),那么在您生成报告数据后运行该查询,您可以将报告总计与总结时的总计进行比较。报告。如果结果不同,您知道运行报告时数据已更改。

另一个选项 - 特定于SQLServer - 对您报告的数据使用checksum。如果校验和在报告运行的开始和结束之间发生变化,则表示您已经更改了数据。

最后 - 也是最显着的 - 如果报告的准确性至关重要,您可以存储报告运行中包含特定行的事实。这使您的报告更加复杂,但它可以让您清楚地知道您已经包含了所需的所有数据。例如:

insert into reporting_history
select @reportID, widget_sales_id
from widget_sales

--- reporting logic here
select widget.cost,
       widget_sales.date, 
       widget_sales.price, 
       widget_sales......
from widgets inner join widget sales on ...
             inner join reporting_history on widget_sales.widget_sales_id = widget_sales.widget_sales_id

---- all your other logic