我们的测试数据库链接到我们公司内另一个部门拥有的数据库。每当他们将数据库关闭时(比如使用生产数据刷新时),我们的应用程序也会关闭。我们对他们的数据库做的唯一事情是我们有一个视图,从他们的一个表中选择,我们在许多查询中加入到这个视图。
理想情况下,每当他们的系统出现故障时,我都希望我们能够从我们数据库中存在的表的备份中获取信息。它有一些稍微陈旧的数据,但至少我们能够继续工作。我想过在视图或sql函数中使用TRY...CATCH
,但它们不受支持。存储过程可能会起作用,除非您无法在查询中加入存储过程的结果,可以吗?
当链接服务器的表不可用时,如何使SELECT
语句回退到备份表?
答案 0 :(得分:1)
所以我最终做的是创建一个SQL Server代理作业,每隔几分钟调用sp_testlinkedserver
TRY...CATCH
,如果它失败,我们会改变视图以指向我们的备份表,如果它起来了,我们改变它以再次指向“实时”数据。我们还跟踪先前的状态,因此我们只在状态发生变化时才更改视图。它很漂亮。