我有一个针对SQL Server 2005数据库运行的ASP.NET应用程序。每天一次,我需要运行一系列的触发器和放大器。 SQL代理作业中的SSIS包用于更新表中的数据。 SQL代理作业将按计划无人参与运行。
当SQL代理作业步骤正在运行时,Web应用程序有一些小机会失败,因此我想暂时禁用该应用程序,运行敏感步骤,然后再次启用该应用程序。
我看到我可以使用网络应用网站根目录中的app_offline.htm
文件。为此,我需要跨服务器向SQL代理程序包提供权限,以便它可以在Web服务器上执行类似ren app_offline.tmp app_offline.htm
的操作,运行步骤,然后将htm文件重命名为.tmp。
我正在考虑的另一个选项是将一个'MAINTMODE'布尔值放在一个由SQL Agent作业更新的表中,并让Web应用程序在每次调用db时检查它以确保它可用。如果不是,请重定向到指示网站暂时脱机的页面。
我还应该考虑其他方法吗?对用户造成最小干扰的最佳方法是什么?
谢谢,
克里斯
答案 0 :(得分:1)
我会使用你提出的'MAINTMODE'方法。这样,只有在请求到达您的Web服务器时才会触发它。为简单起见,您的数据库服务器不必与您的Web服务器通信。让您的Web服务器处理演示文稿,让您的数据库服务器专注于数据库。