Estamos recebendo erros estranhos em um de nossos procedimentos armazenados. Este procedimento armazenado chama outros procedimentos armazenados e estamos recebendo erros relacionados a colunas que não podem ser encontradas nos subprocedimentos. Por exemplo:
Exec StoredProc1, this stored proc calls StoredProc2, StoredProc3 & StoredProc4
Quando executo StoredProc1 pela primeira vez, recebo erros relacionados a colunas em StoredProc2. Em seguida, executo StoredProc2 diretamente e funciona, depois chamo StoredProc1 novamente e ele reclama sobre erros de coluna em StoredProc3 e assim por diante.
Eu estou supondo que isso tem a ver com a forma como o SQL Server armazenou em cache seus planos de execução para StoredProc1, e a execução de cada procedimento armazenado por sua vez força os Planos/Dependências Armazenados a serem atualizados.
Como posso corrigir isso em toda a linha?
Se eu executar cada procedimento dependente, um de cada vez, execute o pai, ele funcionará. Se eu executar estes comandos:
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
DBCC FREEPROCCACHE;
e execute o procedimento pai, recebo os erros novamente.
Todos os procedimentos armazenados usam uma tabela temporária com o mesmo nome, mas se bem entendi, porque estão em procedimentos diferentes, eles criariam tabelas separadas.