我们以前直接从我们的生产数据库运行 Crystal Reports。这对使用数据库的用户造成了直接影响。我们搬到了一个新的(专用)服务器和一个新的数据库,并放弃了 Crystal Reports,转而使用 SSRS。我们还有一个专用的报告服务器,我们的生产数据库每天复制两次。我们从报告服务器运行查询,以免降低生产环境的速度。
这是解决我们问题的最佳方法吗?备份恢复一旦发生就会让每个人都离开报告服务器,管理层要求我们将这个过程(备份恢复)提高到每两个小时一次。然而,每天只有两次给我们带来了问题。例如,当我写这篇文章时,数据库卡在“Restoring...”中并且已经持续了至少 12 个小时。所以在 DBA 进来的同时(我只写报告)我想我会问。这是我们正在进行的最好的设置吗?
这就是复制的目的。这是一种比备份/恢复更容易保持报告数据库同步的方法。
如果数据库副本可以是只读的,那么尝试使用:数据库快照。它会在很短的时间内创建当前数据库状态的只读副本。
更多信息在这里:http: //msdn.microsoft.com/en-us/library/ms175158 (v=sql.100).aspx
将此代码安排到每天运行一次或多次的作业中:
基本 t-sql 语法:创建数据库 FOO 作为 FOO1 的快照
与其让生产系统负担支持复制或其他技术的开销(以及所需的潜在更改),如果仍然可以接受几个小时的“陈旧”数据,为什么不使用两个恢复的副本进行报告呢?
COPY_ONLY
对生产进行备份。Report_A
.Report_A
.COPY_ONLY
对生产进行备份。Report_B
.Report_B
.您可以在每次还原后更新一些表,并让您的应用程序足够智能以根据最新情况生成连接字符串。
进行还原时,有时用户仍会连接到“旧”,但这应该是一个不太常见的问题,因为新副本在它们继续工作时在后台恢复,而不是替换什么他们正在努力。
这是 Microsoft 始终在可用性组上创建的确切用例之一。具有读取意图的查询(例如您的报告查询)可以自动路由到辅助副本。
缺点是这需要升级到 SQL Server 2012 并且需要企业版。我不知道你是否有这种可能。