Conexões massivas em Instância SQL Server

Tatiana Jandira 145 Pontos de reputação
2024-07-03T18:33:08.9233333+00:00

Se tivermos conexões massivas na instancia do SQ Server , ou seja um usuario tentando conexões centenas de vezes por segundo em um instancia sql server.

Isso pode causar concorrência de conexões e gerar timeout para outras conexões entrantes na instância de banco de dados sql server ?

SQL Server
SQL Server
Uma família de sistemas de gerenciamento e análise de banco de dados relacional da Microsoft para soluções de comércio eletrônico, linha de negócios e data warehouse.
40 perguntas
0 comentários Sem comentários
{count} votos

Resposta aceita
  1. Jonathan Eduardo Pereira Castillo 1.950 Pontos de reputação Fornecedor da Microsoft
    2024-07-04T16:49:04.5966667+00:00

    Olá, Tatiana Jandira feliz em ajudá-lo

    Sim, conexões massivas em uma instância do SQL Server podem causar concorrência de conexões e gerar timeouts para outras conexões entrantes. Aqui estão alguns pontos importantes a considerar:

    1. Limite de Conexões: O SQL Server tem um limite máximo de conexões simultâneas. Quando esse limite é atingido, novas conexões podem ser recusadas ou sofrer timeouts.
    2. Pooling de Conexões: O uso inadequado do pooling de conexões pode levar a esgotamento do pool, resultando em timeouts. Certifique-se de que as conexões sejam fechadas corretamente após o uso.
    3. Configurações de Timeout: O tempo padrão de timeout para conexões é de 15 segundos, e para comandos é de 30 segundos. Esses valores podem ser ajustados conforme necessário.
    4. Recursos do Servidor: Conexões massivas podem sobrecarregar os recursos do servidor, como CPU e memória, afetando o desempenho geral e causando timeouts.

    Para mitigar esses problemas, considere as seguintes práticas:

    • Otimização de Consultas: Certifique-se de que as consultas SQL sejam otimizadas para reduzir o tempo de execução.
    • Monitoramento e Ajustes: Monitore o desempenho do servidor e ajuste as configurações conforme necessário.
    • Uso de Serviços de Balanceamento de Carga: Distribua a carga de trabalho entre várias instâncias de SQL Server, se possível.

    Espero que essas dicas ajudem a resolver o problema! Se precisar de mais assistência, estou à disposição.

    Saudações

    Jonathan.

    -----------

    Se a resposta for a solução correta, clique em "Aceitar resposta" e vote educadamente nela. Se você tiver perguntas adicionais sobre essa resposta, clique em "Comentar". Nota: Siga as etapas em nossa documentação para habilitar notificações por e-mail se você gostaria de receber notificações por e-mail relacionadas a este tópico.

    1 pessoa achou esta resposta útil.
    0 comentários Sem comentários

8 respostas adicionais

Classificar por: Mais útil
  1. Tatiana Jandira 145 Pontos de reputação
    2024-07-04T20:23:54.33+00:00

    Boa tarde. obrigada pela Resposta.

    Realmente tivemos um sintoma bem parecido com timeouts, e identificamos que havia um usuário tentando fazer conexão por segundo.

    Nós implementamos algumas rotinas que faz o monitoramento de quem está tentado realizar as tentativas de logins usando o trace sql (Audit login fail).

    Porem nos identificamos que quando é feita uma tentativa de login usando uma conta de sql e nao mostra qual conta de windows que estava logado na maquina.

    Existe alguma forma de conseguir essa informação da conta de windows(NTUserName) q tentou fazer conexão usando conta sql.

    User's image

    0 comentários Sem comentários

  2. Jonathan Eduardo Pereira Castillo 1.950 Pontos de reputação Fornecedor da Microsoft
    2024-07-15T16:57:02.27+00:00

    Boa tarde Tatiana Jandira! Fico feliz em ajudar.

    Para identificar a conta de Windows (NTUserName) que tentou fazer a conexão usando uma conta SQL, você pode usar o SQL Server Extended Events ou o SQL Server Audit. Aqui está um exemplo de como configurar isso usando Extended Events:

    1. Abra o SQL Server Management Studio (SSMS).
    2. Conecte-se ao seu servidor SQL.
    3. Crie uma nova sessão de eventos estendidos:
      • No Object Explorer, expanda Management, clique com o botão direito em Extended Events, e selecione New Session Wizard.
      1. Configure a sessão:
        • Dê um nome à sessão.
          • Adicione o evento sqlserver.login para capturar tentativas de login.
            • Adicione as ações sqlserver.client_app_name e sqlserver.nt_username para capturar o nome da aplicação cliente e o nome do usuário do Windows.
            1. Especifique o destino:
              • Escolha um destino para armazenar os dados coletados, como um arquivo ou o buffer de memória.
              1. Inicie a sessão:
                • Finalize o assistente e inicie a sessão de eventos.

    Aqui está um exemplo de script T-SQL para criar uma sessão de eventos estendidos que captura essas informações:

    SQL:

    CREATE EVENT SESSION [LoginTracking] ON SERVER

    ADD EVENT sqlserver.login(

    ACTION(sqlserver.client_app_name, sqlserver.nt_username)

    )

    ADD TARGET package0.event_file(SET filename=N'C:\Temp\LoginTracking.xel')

    WITH (STARTUP_STATE=ON);

    GO

    ALTER EVENT SESSION [LoginTracking] ON SERVER STATE = START;

    GO

    Este script cria uma sessão de eventos chamada LoginTracking que grava os eventos de login em um arquivo. Você pode ajustar o caminho do arquivo conforme necessário.

    Jonathan

    -----------

    Se a resposta for a solução correta, clique em "Aceitar resposta" e vote educadamente nela. Se você tiver perguntas adicionais sobre essa resposta, clique em "Comentar". Nota: Siga as etapas em nossa documentação para habilitar notificações por e-mail se você gostaria de receber notificações por e-mail relacionadas a este tópico.

    ------------

    0 comentários Sem comentários

  3. Tatiana Jandira 145 Pontos de reputação
    2024-07-15T17:14:05.0433333+00:00

    Boa Tarde.

    Td Bem !

    Obrigada pela resposta.

    Uma dúvida, ao inves de salvar no arquivo tem como salvar em uma tabela no SQL Server ?

    C:\Temp\LoginTracking.xel

    0 comentários Sem comentários

  4. Jonathan Eduardo Pereira Castillo 1.950 Pontos de reputação Fornecedor da Microsoft
    2024-07-15T19:35:31.7433333+00:00

    Boa Tarde

    Claro, é possível salvar dados diretamente em uma tabela no SQL Server em vez de armazená-los em um arquivo

    Jonathan

    -----------

    Se a resposta for a solução correta, clique em "Aceitar resposta" e vote educadamente nela. Se você tiver perguntas adicionais sobre essa resposta, clique em "Comentar". Nota: Siga as etapas em nossa documentação para habilitar notificações por e-mail se você gostaria de receber notificações por e-mail relacionadas a este tópico.