在我们的sql Server上,我们为每个Web应用程序提供了一个数据库.对于报告,我们使用Reporting Services,所有报告数据(包括报告参数)都来自存储过程.
存储过程与报告中的数据位于同一数据库中.因此,例如,为Stock报告提供服务的过程在Stock数据库中.某些报告显示来自多个数据库的信息,然后proc将位于其中一个源数据库中.报告参数从Enterprise数据库中的procs获取数据,这些数据库包含商店,员工等数据.
这意味着所有报告至少具有与Enterprise数据库的连接以及与另一个数据库的另一个连接 – 有时甚至更多.
我的问题是:将报告过程转移到单独的“报告”数据库中是否有好处.我知道将报告移动到另一台服务器上的好处,我不是在谈论它 – 这将在同一台服务器上.
可能影响到这一点的事情是:
>报表有多个数据库连接会影响报表的速度吗?
>将报告proc与数据放在一个单独的数据库中会阻止我们使用索引视图吗?
>您是否发现在单独的数据库中管理报告更容易/更难?
请让我知道你在想什么.
解决方法
答案是:是的,这样做有好处.关于运营数据库的报告将使用大量资源,并将干扰运营系统的性能.请记住,数据库性能受到机械约束(磁盘磁头来回移动和旋转延迟,因为我们等待正确的扇区使其出现在头部下方).您有两种广泛的报告策略选择:
> Replicate your database到另一台服务器上并将报告sprocs移到它上面.报告在复制的服务器上运行.这是最省力的,可以重用现有的报告和存储过程.
>构建一个Data Warehouse,整合来自您的生产系统的数据并将其转换为a form that is much friendlier for reporting.如果您有很多临时统计报告可以通过“昨天的业务结束”快照完成,数据仓库可能是更好的方法.