Temos dois servidores de banco de dados SQL 2012 configurados em espelho com testemunha para failover automático.
Ontem o servidor primário sofreu uma degradação do HDD que desencadeou o failover, porém quando o servidor secundário se tornou o principal começamos a ver muitos erros na execução de alguns SPROCs.
A definição do objeto '[sp_name]' mudou desde que foi compilado
Entendo que isso pode ser resolvido executando sp_recompile
o novo princípio, o que forçaria uma recompilação em todos os SPROCs, funções e gatilhos.
Isso não é ideal, pois requer intervenção manual no failover. Esse é um problema que posso resolver alterando a configuração ou é um bug conhecido do SQL Server?
Qual edição do SQL você está usando? Às vezes, o mecanismo não conseguia consultar o catálogo de metadados, resultando em tal erro. Isso foi identificado como um bug. Mas você tem uma solução alternativa para resolver esse problema. Se você pudesse recompilar o procedimento armazenado na próxima vez que for executado usando
sp_recompile
.Os detalhes de compilação e recompilação são discutidos abaixo.
Recompilar um procedimento armazenado
Atualize o Stored Proc no SSMS e execute um aplicativo separado que chama o procedimento. Você precisa encerrar a sessão na qual está editando o procedimento. As alterações são visíveis apenas na sessão de edição até que sejam confirmadas.
Confira no link abaixo:
A definição do objeto 'nome' mudou desde que foi compilado