Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As configurações de tempo limite no driver JDBC podem ser usadas para priorizar a capacidade de resposta do aplicativo. Por padrão, a maioria dos tempos limite do driver prioriza a espera de um resultado para garantir a consistência dos dados. Escolha tempos limite apropriados para as necessidades do aplicativo.
Para a conexão inicial, loginTimeout é usado:
-
loginTimeouté o número de segundos que o motorista espera para estabelecer uma conexão com o servidor. Se esse tempo passar, o driver retorna um erro e não abre a conexão. Um valor zero define o timeout para o tempo padrão do sistema, que é de 30 segundos no driver JDBC 11.2 e versões posteriores. No driver JDBC 10.2 e versões anteriores, o tempo padrão é de 15 segundos. Qualquer valor diferente de zero define o número de segundos que o motorista espera antes de encerrar uma conexão falhada. Se você sempre tem dificuldade para estabelecer uma conexão com o driver JDBC, talvez precise aumentar esse tempo para 90 ou até 120 segundos.loginTimeouttambém limita as tentativas de reconexão do driver, não apenas uma única tentativa. Isso importa quando você se conecta a um Banco de Dados SQL do Azure sem servidor com pausa automática. Para obter mais informações, confira Conectar-se a um banco de dados sem servidor pausado automaticamente.
Uma vez estabelecida a conexão, queryTimeout, cancelQueryTimeout e lockTimeout são usados durante as execuções de instrução.
socketTimeout é usado para qualquer comunicação do driver com o servidor.
-
queryTimeouté o tempo, em segundos, que o driver aguardará, após o envio de um comando de execução ao servidor, por uma resposta dele com os dados. Se esse tempo for excedido, o comando será cancelado. Exceder esse tempo limite não encerra a conexão. O valor padrão é -1, que significa tempo limite infinito. -
cancelQueryTimeouté o tempo, em segundos, que o driver espera que o servidor confirme o cancelamento dequeryTimeoutantes de encerrar/fechar a conexão à força. Isso significa que o driver espera o total decancelQueryTimeoutmaisqueryTimeoutsegundos antes de encerrar a conexão. Definir esse tempo limite para um valor diferente de zero garante que os aplicativos possam permanecer responsivos em caso de falha na rede ou na comunicação com o servidor quando uma consulta atinge o tempo limite. O valor padrão para esta propriedade é -1, que é um tempo de espera infinito. -
lockTimeouté o tempo de espera até que um bloqueio seja liberado, nos casos em que há um bloqueio impedindo a execução da instrução. Exceder esse tempo limite não resulta em encerramento de conexão. O valor padrão para esta propriedade é -1, que é um tempo de espera infinito. -
socketTimeoutaplica-se a todas as comunicações de soquete com o servidor. Se o servidor interromper a comunicação com o driver, seja por não reconhecer ou não responder aos dados, o driver aguardará o valor desocketTimeoutantes de encerrar a conexão. Definir esse tempo limite para um valor diferente de zero garante que os aplicativos possam permanecer responsivos em caso de falha na rede ou na comunicação com o servidor. O valor padrão é 0, que significa tempo limite infinito. Certifique-se de quesocketTimeoutseja maior do quequeryTimeoutpara evitar exceções de tempo limite de soquete durante a janelaqueryTimeout. Similarmente, certifique-se de quesocketTimeoutseja maior do quecancelQueryTimeoutpara evitar exceções de tempo limite de soquete durante a janelacancelQueryTimeout.
Os valores de tempo limite adequados para o aplicativo dependem das prioridades dele. Definir valores de tempo limite mais baixos prioriza a capacidade de resposta do aplicativo, em vez de a consistência dos dados. Quando o tempo limite é atingido, os aplicativos precisam decidir o melhor curso de ação. Essa decisão é baseada na ação do banco de dados que está sendo executada. Por exemplo, para uma SELECT instrução, a decisão pode ser relatar um erro ao usuário, ou pode ser reconectar e tentar novamente. No caso de instruções INSERT ou UPDATE, essa decisão pode ser diferente.
Para um aplicativo responsivo, loginTimeout e queryTimeout devem ser definidos com valores relativamente baixos. Da mesma forma, cancelQueryTimeout também deve ser definido com um valor baixo a fim de garantir que o driver não espere muito tempo pela confirmação do servidor com relação ao cancelamento da consulta quando um queryTimeout for excedido. Por fim, socketTimeout deve ser definido para evitar que o driver espere muito tempo durante qualquer cenário em que a conectividade com o servidor seja interrompida (interrupção da rede, travamento do servidor etc.).
Resumo da propriedade
| Propriedade | Descrição | Padrão | Resultado da conexão |
|---|---|---|---|
loginTimeout |
O número de segundos que o driver deve aguardar antes que o tempo limite de uma conexão com falha seja alcançado. | 30 segundos [11.2+], caso contrário, 15 segundos |
Conexão encerrada |
queryTimeout |
O número de segundos a aguardar antes de cancelar uma consulta. | -1 [tempo limite infinito] | Conexão aberta |
cancelQueryTimeout |
O número de segundos para aguardar uma confirmação de cancelamento de QueryTimeout. | -1 [tempo limite infinito] | Conexão encerrada |
lockTimeout |
O número de milissegundos a aguardar antes que o banco de dados retorne um erro de tempo limite de bloqueio. | -1 [tempo limite infinito] | Conexão aberta |
socketTimeout |
O número de milissegundos de espera em uma leitura ou gravação de soquete. | Zero [tempo limite infinito] | Conexão encerrada |