Estamos atualizando nosso ambiente de teste com um novo servidor e uma versão atualizada do Microsoft SQL Server e encontramos um problema.
No novo servidor, nosso código antigo obterá "a operação não é permitida quando o objeto é fechado" ao executar alguns procedimentos armazenados. Esta mensagem nunca apareceu no servidor antigo. Quando o rastreamos, o problema pode ser resolvido adicionando SET NOCOUNT ON;
ao procedimento armazenado.
Examinei os padrões no banco de dados e não vi configurações diferentes (SQL Server 2008 vs SQL Server 2014) relacionadas aos padrões.
Qual configuração devo procurar para resolver isso globalmente sem precisar adicionar SET NOCOUNT ON
mil procs armazenados?
A Configuração do SQL Server tem uma opção chamada, apropriadamente,
user options
, que pode ser definida usando osp_configure
procedimento armazenado do sistema. Eu escrevi uma postagem no blog sobre SQL Server Science mostrando como inspecionar e definir as opções do usuário.Em resumo, você pode obter o "valor de configuração" do servidor antigo, usando isto:
Em seguida, defina o novo servidor para usar as mesmas opções por meio disso:
(substitua o <valor de configuração> pelo valor do servidor antigo).