Artigo: 305635 - Última revisão: sexta-feira, 2 de Dezembro de 2005 - Revisão: 3.3

PROBLEMA: Ocorrência de um tempo de espera quando uma base de dados é expandir automaticamente

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sintomas

Poderá detectar os seguintes sintomas no SQL Server:
  • Uma base de dados não expande automaticamente Apesar de ter a opção autogrow .
  • O ficheiro Errorlog não contém quaisquer mensagens que indicam que a base de dados está cheio.
  • Computadores cliente que tentar modificar dados na base de dados receber uma mensagem "Tempo de espera expirou", nas transacções de utilizador.
  • SQL Profiler apresenta um evento "Atenção" numa ligação e, se o computador está a executar o SQL Server 7.0, SQL Profiler também apresenta um erro "Excepção 822".
Nota : A mensagem "Tempo de espera expirou" é uma mensagem genérica que poderá receber noutras situações.

Poderá detectar estes sintomas quando:
  • Executa o SQL Profiler durante um longo período de tempo, capturar o evento de excepção e a coluna IntegerData e, em seguida, procure uma ocorrência do erro "Excepção 822".

    - Ou -
  • Utilizar o -y822 parâmetro para iniciar o SQL Server. Depois da base de dados não for expandida automaticamente, pode verificar o ficheiro Errorlog para informação de pilha devido ao erro "Excepção 822".
Nota : O ficheiro de base de dados pode expandir automaticamente, mas o tempo limite ocorre quando o ficheiro está a ser inicializado para utilização, tem de ocorrer para a base de dados ser útil.

Causa

Quando uma ligação emite uma declaração DML (Data modificação idioma) que requer espaço adicional numa base de dados, SQL Server tenta expandir automaticamente a base de dados, se tiver a opção autogrow definida. O cliente que emitiu a instrução poderá exceder o tempo limite enquanto a base de dados é expandir, dependendo do valor limite de tempo de consulta que esteja configurado no lado do cliente. Várias aplicações utilizar um valor de tempo limite predefinido de 30 segundos. Este limite de tempo termina a ligação de cliente e a expansão automática da base de dados lhe for pedido.

Como contornar

Para contornar este comportamento, utilize um dos seguintes métodos:
  • Expanda a base de dados manualmente. Para expandir a base de dados manualmente, utilize a instrução ALTER DATABASE ou SQL Server Enterprise Manager.
  • Aumente o valor de tempo de espera de consulta cliente da aplicação que solicita o DML para que o servidor tenha tempo para expandir a base de dados. O DML pede-lhe a base de dados para o expandir.

    Por exemplo, se estiver a utilizar o SQL Query Analyzer, o valor de tempo de espera de consulta predefinido é 0 (infinito). Se estiver a utilizar o valor predefinido, não tiver este comportamento. Se não estiver a utilizar o valor predefinido, aumente o valor de tempo limite de consulta.

    Para outras aplicações (estarem baseada na Web ou não), pode efectuar a alteração na aplicação. Por exemplo, se estiver a utilizar o ADO, pode alterar a propriedade de CommandTimeout para o objecto de ligação ou comando .
  • Determine quanto demora a expansão de base de dados no servidor. Para determinar este, execute a instrução ALTER DATABASE no SQL Query Analyzer e, em seguida, visualize a barra de estado. Depois de determinar, defina o cliente valor de tempo de espera para algo superior a este valor.
  • Não altere o valor de tempo limite de cliente. Continue a testar a expansão automática e veja a quantidade expansão completa em menos o valor de tempo limite de cliente. Defina a opção autogrow para este novo valor (mais pequeno).

Mais Informação

Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
315512  (http://support.microsoft.com/kb/315512/EN-US/ ) INF: Considerações sobre Autogrow ' e ' Configuração do Autoshrink

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbprb KB305635 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 305635  (http://support.microsoft.com/kb/305635/en-us/ )