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.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Use o SQL Server Profiler para identificar a causa de um deadlock. Um deadlock ocorre quando há uma dependência cíclica entre dois ou mais threads, ou processos, para algum conjunto de recursos no SQL Server. Usando o SQL Server Profiler, é possível criar um rastreamento que registra, reproduz e exibe eventos de deadlock para análise.
Para rastrear eventos de deadlock, adicione a classe de evento Deadlock graph a um rastreamento. Esta classe de evento popula a coluna de dados TextData no rastreamento com dados XML sobre o processo e objetos que estão envolvidos no deadlock. SQL Server Profiler pode extrair o documento XML para um arquivo XML de deadlock (.xdl) que pode ser exibido posteriormente no SQL Server Management Studio. Você pode configurar o SQL Server Profiler para extrair eventos Deadlock graph para um único arquivo contendo todos os eventos Deadlock graph ou para arquivos separados. Essa extração pode ser feita de qualquer uma destas formas:
Durante a configuração do rastreamento, use a guia Configurações de Extração de Eventos. Essa guia só aparecerá depois de você selecionar o evento gráfico de deadlock na guia Seleção de Eventos.
Usando a opção Extrair Eventos do SQL Server no menu Arquivo .
Eventos individuais também podem ser extraídos e salvos clicando com o botão direito do mouse em um evento específico e escolhendo Extrair Dados de Evento.
Grafos de impasse
SQL Server Profiler e o SQL Server Management Studio usam um gráfico de espera de deadlock para descrever um deadlock. O gráfico de espera de deadlock contém nós de processo, nós de recurso e bordas representando as relações entre os processos e os recursos. Os componentes dos gráficos de espera estão definidos na tabela a seguir:
Nó | Descrição |
---|---|
Nó de processo | Um thread que executa uma tarefa; por exemplo, INSERT , UPDATE ou DELETE . |
Nó de recurso | Um objeto de banco de dados; por exemplo, uma tabela, índice ou linha. |
Microsoft Edge | Uma relação entre um processo e um recurso. Uma borda request ocorre quando um processo aguarda um recurso. Uma borda owner ocorre quando um recurso aguarda um processo. O modo de bloqueio encontra-se na descrição da borda. Por exemplo, Modo: X. |
Nó de processo de bloqueio
Em um gráfico de espera, o nó de processo contém informações sobre o processo. A tabela a seguir explica os componentes de um processo.
Componente | Definição |
---|---|
ID do processo do servidor | ID da sessão (SPID), um identificador atribuído pelo servidor para o processo que possui o bloqueio. |
ID do lote do servidor | Identificador de lote de servidor (SBID). |
ID do contexto de execução | Identificador do contexto de execução (ECID). A ID de contexto de execução de um determinado thread associado a uma ID de sessão específica. ECID = { 0, 1, 2, 3, ... n }, em que 0 sempre representa o thread principal ou pai e { 1, 2, 3, ... n } representa os subthreads. |
Prioridade do deadlock | Prioridade do deadlock para o processo. Para obter mais informações sobre valores possíveis, consulte SET DEADLOCK_PRIORITY. |
Log Usado | Quantidade de espaço de log usada pelo processo. |
ID do Proprietário | ID de transação para os processos que estão usando transações e, atualmente, aguardam em um bloqueio. |
Descritor da transação | Ponteiro para o descritor de transação que descreve o estado da transação. |
Buffer de entrada | Buffer de entrada do processo atual; define o tipo de evento e a instrução que são executados. Os valores possíveis incluem: Idioma RPC Nenhuma |
de | Tipo de instrução. Os valores possíveis são: NOP SELECIONAR ATUALIZAÇÃO INSERIR EXCLUIR Desconhecido |
Nó de recurso em impasse
Em um deadlock, dois processos esperam por um recurso ocupado pelo outro processo. Em um gráfico de deadlock, os recursos são exibidos como nós de recurso.