Nova simultaneidade e agendamento de diagnóstico foram adicionados ao SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 319892 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 102179 (SQLBUG_70)
BUG #: 356317 (SQLBUG_80)
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Para manter altamente dinâmicos, o SQL Server contém vários processos internos para garantir a estabilidade. Um exemplo é o monitor de bloqueio que você pode usar para identificar e resolver situações de deadlock.

SQL Server 7.0 Service Pack 4 (SP4) e SQL Server 2000 Service Pack 3 (SP3) adicionou aprimorada de monitoramento de integridade do processo. Aprimoramentos de monitoramento de integridade ocorreram nas seguintes áreas:
  • Bloqueando
  • Problemas de rede
  • Entrada/saída (E/S)
  • Memória
  • CPU
Quando o SQL Server detecta problemas de integridade, uma série de novas mensagens de erro, como a seguir, são registrados no log erro do SQL Server. Para obter detalhes sobre essas condições de mensagem de erro, consulte o "mais informações" seção deste artigo.

SQL Server 7.0

Erro 1223: ID do processo % d: % d não é possível adquirir o bloqueio "% s" no recurso %s porque existe um deadlock potencial no Agendador %d para o recurso. Processo de identificação % d: % d mantém um bloqueio "% h" Este recurso.

SQL Server 2000

Erro 1229: ID do processo % d: % d possui recursos que estão bloqueando processos em % d do Agendador.
As mensagens de erro novo incluir a seqüência seguinte.

estendido detecção de bloqueio: 1223, 1229
Agendador travadas detecção: 17881, 17883
todos os agendadores travadas detecção: 17882, 17884
Aviso Observe que um problema relacionado a integridade é geralmente o resultado de uma condição que ocorreu anteriormente. Você deve estudar o log de erro do SQL Server e os logs de eventos sistema cuidadosamente para determinar a causa real.

Por exemplo, uma mensagem de 17883 erro pode indicar um problema de agendador. No entanto, o log de erros pode mostrar uma exceção anterior incorretamente deixados do processo do SQL Server em um estado ruim ou o aplicativo pode ter causado uma condição de bloqueio grave.
Observação Microsoft tenta manter todo o conteúdo atualizado com as 17883 condições mais recentes. No entanto, a mensagem de 17883 erro é uma mensagem de detecção de integridade que pode ser acionada por vários motivos. A Microsoft não corrigiu somente problemas conhecidos com o produto de software do SQL Server, mas também encontrou o Erro 17883 em uma variedade de situações que são não relacionados ao software SQL Server. Por exemplo, o erro ocorreu com consumo de CPU de um aplicativo externo e falhas de hardware. Você deve determinar a causa raiz da mensagem de 17883 erro se você deseja evitar uma ocorrência do erro indesejada.

Mais Informações

Esta seção descreve os aperfeiçoamentos de integridade e mensagens de erro associada que podem ser registradas no log de erro do SQL Server.

UMS

Para entender melhor algumas o diagnóstico de integridade adicional, primeiro você deve compreender como o SQL Server usa um arquivo de auxiliar Ums.dll de agendamento de modo de usuário (UMS).

O SQL Server 7.0 e Microsoft SQL Server 2000 usam agendadores lógicos. Esses agendadores ajudam a Certifique-se que SQL Server maximiza o uso de recursos sistema operacional em relação ao banco de dados de chaves ação caminhos. A camada UMS certifica-se que SQL Server usa corretamente eventos do Win32 para controlar rigorosamente thread e fibra (ou ambos) agendamento visibilidade para o sistema operacional. Controlando estritamente segmentos ou fibras que podem ser executado, SQL Server pode maximizar o uso da CPU como ele se relaciona à primitivos de banco de dados, como bloqueio.

Por exemplo, lógica de agendamento permite bloqueio waiters para suspensão (WaitForSingleObject em um evento de Win32) até que o proprietário de bloqueio libera o bloqueio e sinais (SetEvent)-los para despertar.

Detecção de bloqueio estendido

O monitor de bloqueio tiver sido estendido para detectar um recurso de (segmento de trabalho) bloqueio cenário nível. Se todos os threads trabalho atribuído e um SPID que possui que um bloqueio é atualmente enfileirado para o Agendador, porque todos os threads trabalho atribuído tiverem sido criados estiverem em um estado de espera un-resolvable, seguinte mensagem de erro é gravada no log de erro do SQL Server:

SQL Server 7.0

Erro 1223: ID do processo % d: % d não é possível adquirir o bloqueio "% s" no recurso %s porque existe um deadlock potencial no Agendador %d para o recurso. Processo de identificação % d: % d mantém um bloqueio "% h" Este recurso.
Descrição do parâmetro:
  1. Aguardando SPID
  2. Aguardando ECID (ID de execução de processo de sub)
  3. Nome do modo de bloqueio
  4. Nome do recurso
  5. Identificação de agendador UMS lógica
  6. Propriedade SPID
  7. Propriedade ECID
  8. Nome do recurso proprietário

SQL Server 2000

Erro 1229: ID do processo % d: % d possui recursos que estão bloqueando processos em % d do Agendador.
Parâmetro Descrição:
  1. Propriedade SPID
  2. Propriedade ECID (ID de execução de processo de sub)
  3. Propriedade ID de agendador UMS lógico

Sinalizadores de rastreamento

SQL Server contém um sinalizador de rastreamento para desativar este relatório de integridade.

Para desativar o comportamento de geração de relatórios, use um dos seguintes métodos:
  • Estabelecer um parâmetro de inicialização (-T ### )
  • Use DBCC traceon ( ### )
SQL Server 7.0 :-T1216

SQL Server 2000 :-T1261

Observação Isso não é um erro de digitação. -T1216 no SQL Server 2000 já é usado como o sinalizador de rastreamento associado a saída de deadlock. Portanto, 1261 é usada em vez disso.

cenário de exemplo

1 Cliente se conecta ao SQL Server.

1 Cliente executa um comando de Transact-SQL que inicia uma transação e executa a modificação de dados.

Por exemplo:
begin tran
update authors set au_lname = 'test'
cliente 1 se torna IDLE, mostra até como em espera e aguardando um comando com uma transação aberta na tabela de sistema sysprocesses .

Os clientes de 2 a 255: aproximadamente 254 mais clientes faça logon no SQL Server e emitir um SELECT da tabela autores. Todos esses clientes serão tornam-se bloqueado na atualização original.

1 Cliente tenta confirmar a transação, mas ele torna-se na fila porque todos os threads de trabalho estão ligados por clientes 2 a 255.

Bloqueando

Essa mensagem de erro normalmente indica uma situação de bloqueio estendida. Cada vez que o monitor de bloqueio é executado (aproximadamente a cada 5 segundos), as mensagens podem ser adicionadas o log de erro do SQL Server.

Observação Uma mensagem é registrada para cada SPID/ECID que está apresentando o problema de recurso. Portanto, várias mensagens podem ser registradas durante a iteração de monitor mesmo bloqueio.

SQL Server não resolver essa situação automaticamente. No entanto, ele indicará o problema como uma mensagem de erro (1223 ou 1229) adequadamente. Quando esse problema ocorre, você pode resolvê-lo de várias maneiras.

Bloquear ou tempo limite de consulta

Se as consultas usar um bloqueio ou um tempo limite da consulta, a situação normalmente se resolverá como os tempos limite ocorrerem. No entanto, a situação garante investigação pois indica uma redução de aplicativo induzida em simultaneidade.

Transact-SQL KILL

Se o administrador é capaz de consultar a tabela de sistema sysprocesses , poderão usar o comando Transact-SQL KILL para encerrar o SPID BLOQUEIO e para encerrar o SPIDS bloqueado apropriado para liberar segmentos de trabalho e retornar o sistema a um estado normal.
251004Como monitorar o bloqueio de SQL Server 7.0
271509Como monitorar o bloqueio de SQL Server 2000
263889SQL bloqueios bloqueio devido a [[COMPILAÇÃO]]

Assistência do suporte

Se você não pode obter as informações de tabela do sistema sysprocesses , em seguida, obter um despejo de processo do processo (Sqlservr.exe) e contate o suporte do Microsoft SQL Server para investigação adicional.

Consultas paralelas

Em raras circunstâncias, essa mensagem de erro pode ocorrer devido uma seleção de plano de consulta paralela ruim. Se a consulta paralela opta por usar um número significativo de trabalhadores do SQL Server disponíveis para concluir a consulta, ele pode esgotar o pool de operador do SQL Server. A tabela de sistema sysprocesses contém uma coluna ECID para indicar o número de funcionários que estão sendo usados no nome do SPID individual. Se o valor ECID for alto em relação às CPUs físicas no computador, geralmente é uma indicação de uma consulta mal ligada. Revise o plano de consulta e a configuração para ajustar corretamente a consulta em questão da opção consulta grau máximo de paralelismo (MAXDOP).

Questão de agendadores

O número de agendadores lógicos é importante. Quando o SQL Server inicia, a configuração de segmento de trabalho máximo é dividida igualmente entre os agendadores lógicos. À medida que aumenta o número de CPUs disponíveis para o SQL Server a fila de trabalho é dividida mais. Um aplicativo que exibe a atividade de escopo de transação indesejáveis pode se manifestar cenários de falta de recursos mais rápido quando mais CPUs estão envolvidos. Para este tipo de cenário, o escopo de transação de aplicativos é corrigido imediatamente.

A tabela a seguir mostra as atribuições de pool do operador com base no número de CPUs se sp_configure armazenado o procedimento de configuração para máximo de threads de trabalho é igual a 255.
Recolher esta tabelaExpandir esta tabela
bloqueio de CPUs comprimento da cadeia
1255
2128
464
832
1616
Recomendamos que você mantenha a configuração de segmento de trabalho máximo no padrão de 255. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
319942Como determinar as configurações de configuração adequadas do SQL Server

Integridade UMS

Uma rotina interna nova foi adicionada para verificar a integridade do Agendador lógico de cada 60 segundos. Se o Agendador é considerado como desativado ou se ele parou de responder, a mensagem de erro apropriado é registrada no log de erro do SQL Server. Um erro é registrado a cada 60 segundos até que o problema seja resolvido.

Como mencionado anteriormente, essas mensagens são geralmente uma indicação de um evento anterior. Consulte cuidadosamente os SQL Server erro log e aplicativo logs de eventos para ajudar a determinar a causa raiz do problema.

Observação Um instantâneo é criado cada 60 segundos. Portanto, ele pode ser 120 segundos antes que a condição for detectada pela primeira vez.

SQL Server 7.0

Erro: 17881 - O Agendador de %1! ld! parece estar desativado. PSS 0 x % 2! p!, EC 0 x % 3! p!, contexto UMS 0 x % 4! p!
Erro: 17882 - deadlocks potenciais existem em todos os agendadores

Sinalizadores de rastreamento

Você pode desativar essas duas verificações se você iniciar o SQL Server 7.0 com o -T1217 parâmetro de inicialização.

SQL Server 2000 SP3

8.00.760 (SP3)
Erro: 17883 - O Agendador de %1! ld! parece estar desativado. SPID %2! ld!, ECID % 3! ld!, contexto UMS 0 x % 4! p!

8.00.765

Iniciando com o 8.00.765 hot corrigir, a mensagem foi alterada para ser mais descritivo.
Erro: 17883 - processar %1! ld!: % 2! ld! (%3! lx!) Contexto UMS 0 x % 4! p! parece ser não-produzindo no Agendador %5! ld!

Exemplo:
Erro do servidor 2003-03-21 08:22:20.27: 17883, gravidade: 1, estado: 0
2003-03-21 08:22:20.27 servidor processo 51:0 (dbc) UMS contexto 0x018DA930 parece ser não-produzindo no Agendador de 0.
2003-03-21 08:22:22.45 servidor assinatura de pilha para o despejo é 0 x 00000000
Erro: 17884 - deadlocks potenciais existem em todos os agendadores

Sinalizadores de rastreamento

Você pode desativar essas duas verificações se você iniciar o SQL Server com o parâmetro de inicialização-T1260.

Arquivo de minidespejo do SQL Server 2000

Iniciando com o SQL Server 2000 SP3, a capacidade de capturar um processo de minidespejo foi implementada. Iniciando com compilação 8.00.765, um arquivo de minidespejo é gerado quando o SQL Server detecta um agendador interrompido primeiro.

Para evitar a geração contínua dos arquivos de minidespejo para essas mensagens de erro (17883 and17884), o comportamento padrão é produzir um único arquivo de minidespejo para a vida do processo do SQL Server. Para ativar um arquivo de minidespejo para todas as ocorrências das mensagens, ative o sinalizador de traço - T1262.

O arquivo de minidespejo é gerado no LOG de pasta e é SQLDmpr ### .mdmp. Este arquivo de minidespejo pode ser avaliado pelo suporte da Microsoft para ajudar a determinar a causa raiz do problema.

Erro 17881 e Erro 17883

Essas mensagens indicam um agendador UMS único tem enfrentar um problema rendimento. O monitoramento de integridade detectou que parece ser um agendador com um segmento de trabalho que não está permitindo que os outros operadores de andamento, e o Agendador está sendo sinalizado como não responsivo. Um agendador parou de responder geralmente é um bug com o produto SQL Server ou um componente externo (XProc, objeto COM, e assim por diante).

A seguir estão exemplos de 17833 condições conhecidos. Certifique-se de que você pesquisar o Microsoft Knowledge Base artigos relacionados. Se seu sistema exigir um patch atualizado, aplicá-lo adequadamente.
815056CORRECÇÃO: O processo de ponto de verificação pode atrasar a atividade de banco de dados do SQL Server e não produz Agendador corretamente causando o erro: 17883 ocorrer
810885Subsistemas de disco high-end podem ocorrer erro 17883
Se você não pode determinar a causa raiz imediatamente, consulte o log de erro para problemas e participar de esforços de suporte estendido.

Quando um agendador não está respondendo corretamente, ele pode reduzir a simultaneidade geral para o SQL Server. SQL Server também pode aparecer a ser desativado ou ele pode parar de responder.

Erro 17882 e 17884

Essas mensagens indicam que todos os agendadores UMS tiveram yield problemas. Isso indica que um problema grande no sistema SQL Server e SQL Server aparecerão ter parado de responder. Como com mensagens 17881 e 17883, consulte o log de erros e a base de dados de Conhecimento da Microsoft para obter mais informações. Se necessário, participe de esforços de suporte estendido.

Propriedades

ID do artigo: 319892 - Última revisão: quarta-feira, 18 de maio de 2005 - Revisão: 8.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Service Pack 3
  • Microsoft SQL Server 7.0 Service Pack 4
Palavras-chave: 
kbmt kbsample kberrmsg kbbug kbfix kbinfo KB319892 KbMtpt
Traduçã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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 319892

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com