Compartilhar via


Pool de conexões no SQL Server Management Studio

Aplica-se a: SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Abrir conexões com um SQL Server pode ser uma operação cara, portanto, o SQL Server Management Studio utiliza o recurso pooling de conexões do driver sqlClient ADO.NET. Para obter mais informações, veja Pool de conexões do SQL Server (ADO.NET).

Este artigo fornece mais informações sobre o pool de conexões no SQL Server Management Studio e maneiras de atenuar o efeito que ele pode ter em seu servidor.

Uso e benefícios

O SQL Server Management Studio é um aplicativo complexo com vários recursos, muitos dos quais exigem informações de um banco de dados ou servidor. Grande parte dessas informações é carregada sob demanda para evitar sobrecarga ao fazer uma conexão inicial e evitar um trabalho desnecessário se um recurso não estiver sendo usado.

O agrupamento de conexões pode ajudar a reduzir a sobrecarga ao recuperar essas informações. Os recursos no SQL Server Management Studio geralmente usam a mesma conexão base inserida pelo usuário na caixa de diálogo de conexão, e recursos diferentes podem reutilizar a mesma conexão física em vez de abrir uma nova.

Conexões não agrupadas em pool

Nem todas as conexões no SQL Server Management Studio são agrupadas. Algumas, como a conexão usada para cada editor de consultas, não são explicitamente agrupadas em pool. Há vários motivos para isso, incluindo a necessidade de manter uma SPID (ID de sessão) específica associada ao recurso ou garantir que as alterações feitas nas propriedades de conexão permaneçam consistentes em todo o uso.

Controlar conexões abertas

Embora o pool de conexões melhore o desempenho, isso também resulta em conexões que permanecem abertas por mais tempo do que pode parecer necessário. Quando uma conexão é retornada para o pool, ela permanece aberta, mas em um estado ocioso (ou em suspensão). Esse estado pode impedir que ações sejam tomadas que exijam que todas as conexões sejam fechadas, como remover ou alterar um banco de dados.

Há algumas opções disponíveis para fechar essas conexões ociosas:

  • Aguarde até que ADO.NET feche as conexões. Isso acontece para conexões que não são usadas há entre quatro e oito minutos.

  • Algumas operações no SQL Server Management Studio (como DROP DATABASE) fornecem a opção de fechar todas as conexões existentes antes de executar a operação.

  • Use o comando Fechar Conexões SQL Ociosas no menu Ajuda. Essa opção fecha imediatamente todas as conexões ociosas para a instância atual do SQL Server Management Studio. As conexões ativas não são afetadas, exceto por serem fechadas imediatamente quando terminarem de serem usadas em vez de serem retornadas para o pool.

    Nota

    O fechamento de conexões ociosas pode resultar em um desempenho reduzido na próxima vez que uma nova conexão com o servidor for necessária, pois a conexão precisa ser restabelecida.

  • Feche o SQL Server Management Studio. Fechar o SQL Server Management Studio imediatamente fecha todas as conexões abertas associadas a esse banco de dados ou instância.

  • Execute a instrução KILL para fechar as sessões que estão bloqueando sua operação.