我有两台运行SQL Server 2008 R2的Windows Server 2008服务器。 一个用作主数据库,另一个用作镜像故障转移(两个网站数据库+会话ASPState)。 一切都很好,直到其中一个数据库成为主服务器后重新运行的主服务器。 我得到这个错误:
Invalid object name 'tempdb.dbo.ASPStateTempSessions'.
我能够通过运行存储过程ASPState_Startup (它执行ASPState.dbo.CreateTempTables )来解决这个问题,但是只有在DB是“主体”状态的情况下。 当服务器重新启动时,它将总是回到DB处于“镜像/恢复”状态,这意味着我无法在启动时运行该SP。
有关如何解决此问题的任何build议?
尝试设置在每个实例上运行的SQL代理作业,每分钟执行一次脚本以查找不处于还原状态的数据库,检查表,然后执行过程(如果不存在)。 我从你的问题中拿出了对象名,所以如果它们离开你的环境,它可能需要改变。
if exists ( select 1 from sys.databases where state_desc <> 'RESTORING' and [name] = 'ASPState' ) begin if ( object_id('tempdb.dbo.ASPStateTempSessions') is null ) begin exec sp_executesql @stmt = N'exec ASPState.dbo.CreateTempTables' end end