Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Managed Instance
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, você pode criar um rastreamento que registra, reproduz e exibe eventos de deadlock para análise.
Para rastrear eventos de deadlock, adicione a classe de evento gráfico de deadlock a um rastreamento. Essa classe de evento preenche a coluna de dados TextData no rastreamento com dados XML sobre o processo e os objetos envolvidos no deadlock. O SQL Server Profiler pode extrair o documento XML para um arquivo XML de deadlock (.xdl) que você pode exibir posteriormente no SQL Server Management Studio. Você pode configurar o SQL Server Profiler para extrair eventos de gráfico de Deadlock para um único arquivo que contenha todos os eventos de gráfico de Deadlock ou para separar arquivos. Esta extração pode ser feita de qualquer uma das seguintes formas:
No momento da configuração do rastreamento, usando o separador Configurações de Extração de Eventos. Este separador não aparecerá até que se selecione o evento Gráfico de deadlock no separador Seleção de Eventos.
Usando a opção Extrair eventos do SQL Server no menu Arquivo .
Os 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 do Evento.
Gráficos de impasse
O 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 impasse contém nós de processo, nós de recurso e arestas que representam as relações entre os processos e os recursos. Os componentes dos gráficos de espera são definidos na tabela a seguir:
| Nodo | Descrição |
|---|---|
| Nó do 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. |
| Borda | Uma relação entre um processo e um recurso. Uma borda de solicitação ocorre quando um processo aguarda por um recurso. Uma borda de proprietário ocorre quando um recurso aguarda um processo. O modo de bloqueio está incluído na descrição da borda. Por exemplo, Modo: X. |
Estado de impasse do processo
Em um gráfico de espera, o nó do 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 de sessão (SPID), um identificador atribuído ao servidor para o processo que possui o bloqueio. |
| ID de lote do servidor | Identificador de lote do servidor (SBID). |
| ID do contexto de execução | Identificador de contexto de execução (ECID). O ID de contexto de execução de um determinado thread associado a um ID de sessão específico. ECID = { 0, 1, 2, 3, ... n }, onde 0 representa sempre o thread principal ou pai, e { 1, 2, 3, ... n } representam os subthreads. |
| Prioridade de bloqueio | Prioridade de bloqueio para o processo. Para obter mais informações sobre valores possíveis, consulte SET DEADLOCK_PRIORITY. |
| Registo utilizado | Quantidade de espaço de log usado pelo processo. |
| ID do proprietário | ID de transação para os processos que estão usando transações e atualmente à espera de um bloqueio. |
| Descritor de 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 está sendo executada. Os valores possíveis incluem: Idioma RPC Nenhum |
| Declaração | Tipo de declaração. Os valores possíveis são: NOP SELECIONAR ATUALIZAÇÃO INSERIR ELIMINAR Desconhecido |
Nó de bloqueio de recurso
Em um impasse, dois processos estão à espera de um recurso mantido pelo outro processo. Em um gráfico de deadlock, os recursos são exibidos como nós de recurso.