Como as outras respostas disseram,
sp_reset_connection
indica que o conjunto de conexões está sendo reutilizado. Esteja ciente de uma consequência particular!
Blog do MSDN de Jimmy Mays disse:
sp_reset_connection NÃO redefine o nível de isolamento da transação para o padrão do servidor da configuração da conexão anterior.
ATUALIZAÇÃO :A partir do SQL 2014, para drivers de cliente com TDS versão 7.3 ou superior, os níveis de isolamento de transação serão redefinidos para o padrão.
ref:SQL Server:vazamentos de nível de isolamento em conexões em pool
Aqui estão algumas informações adicionais:
O que sp_reset_connection faz?
As camadas da API de acesso a dados, como ODBC, OLE-DB e System.Data.SqlClient, todas chamam os procedimentos armazenados (internos)p_reset_connection ao reutilizar uma conexão de um pool de conexões. Ele faz isso para redefinir o estado da conexão antes que ela seja reutilizada, mas em nenhum lugar está documentado o que as coisas são redefinidas. Este artigo tenta documentar as partes da conexão que são redefinidas.
sp_reset_connection redefine os seguintes aspectos de uma conexão:
Todos os estados e números de erro (como @@error)
Interrompe todos os ECs (contextos de execução) que são threads filhos de um EC pai executando uma consulta paralela
Aguarda quaisquer operações de E/S pendentes que estejam pendentes
Libera quaisquer buffers retidos no servidor pela conexão
Desbloqueia quaisquer recursos de buffer que são usados pela conexão
Libera toda a memória alocada de propriedade da conexão
Limpa todas as tabelas de trabalho ou temporárias criadas pela conexão
Mata todos os cursores globais pertencentes à conexão
Fecha todos os identificadores SQL-XML abertos que estão abertos
Exclui todas as tabelas de trabalho relacionadas a SQL-XML abertas
Fecha todas as tabelas do sistema
Fecha todas as tabelas de usuários
Descarta todos os objetos temporários
Aborta transações abertas
Defeitos de uma transação distribuída quando inscrito
Diminui a contagem de referência para usuários no banco de dados atual que libera bloqueios de banco de dados compartilhados
Libera fechaduras adquiridas
Libera quaisquer alças adquiridas
Redefine todas as opções SET para os valores padrão
Redefine o valor @@rowcount
Redefine o valor @@identity
Redefine qualquer opção de rastreamento de nível de sessão usando dbcc traceon()
Redefine CONTEXT_INFO paraNULL
no SQL Server 2005 e mais recente [ não faz parte do artigo original ]
sp_reset_connection NÃO será redefinido:
Contexto de segurança, e é por isso que o pool de conexões corresponde às conexões com base na string de conexão exata
Funções de aplicativo inseridas usando sp_setapprole, pois as funções de aplicativo não podiam ser revertidas antes do SQL Server 2005. A partir do SQL Server 2005, as funções de aplicativo podem ser revertidas, mas apenas com informações adicionais que não fazem parte da sessão. Antes de fechar a conexão, as funções do aplicativo precisam ser revertidas manualmente por meio de sp_unsetapprole usando um valor "cookie" que é capturado quandosp_setapprole
É executado.
Observação:estou incluindo a lista aqui, pois não quero que ela se perca na web sempre transitória.