Sinalizadores de rastreamento (Transact-SQL)

Os sinalizadores de rastreamento são usados para definir temporariamente características de servidor específicas ou desativar um determinado comportamento. Por exemplo, se o sinalizador de rastreamento 3205 for definido quando uma instância do SQL Server iniciar, a compactação de hardware para drivers de fita será desabilitada. Os sinalizadores de rastreamento são usados com frequência para diagnosticar problemas de desempenho ou depurar procedimentos armazenados ou sistemas de computador complexos.

A tabela a seguir lista e descreve os sinalizadores de rastreamento disponíveis no SQL Server.

ObservaçãoObservação

As versões futuras do SQL Server talvez não ofereçam suporte ao comportamento de sinalizador de rastreamento.

Sinalizador de rastreamento

Descrição

260

Imprime informações de versão sobre DLLs (bibliotecas de vínculo dinâmico) de procedimento armazenado estendido. Para obter mais informações sobre __GetXpVersion(), consulte Criando procedimentos armazenados estendidos.

Escopo: global ou sessão

1204

Retorna os recursos e tipos de bloqueios que participam de um deadlock e também o comando atual afetado.

Escopo: somente global

1211

Desabilita o escalonamento de bloqueios com base na pressão de memória ou no número de bloqueios. O Mecanismo de banco de dados do SQL Server não escalona bloqueios de linha ou de página para bloqueios de tabela.

O uso desse sinalizador de rastreamento pode gerar um número excessivo de bloqueios. Isso pode reduzir o desempenho do Mecanismo de Banco de Dados ou causar erros 1204 (não é possível alocar recurso de bloqueio) por causa de memória insuficiente. Para obter mais informações, consulte Escalonamento de bloqueios (Mecanismo de Banco de Dados).

Se os sinalizadores de rastreamento 1211 e 1224 forem definidos, o 1211 terá precedência sobre o 1224. Entretanto, como o sinalizador de rastreamento 1211 evita o escalonamento em todos os casos, mesmo sob pressão de memória, recomendamos usar 1224. Isso ajuda a evitar erros de "falta de bloqueios" quando muitos bloqueios são usados.

Escopo: global ou sessão

1222

Retorna os recursos e os tipos de bloqueios que participam de um deadlock e também o comando atual afetado, em um formato XML que não obedece a nenhum esquema XSD.

Escopo: somente global

1224

Desabilita o escalonamento de bloqueios com base no número de bloqueios. Entretanto, a pressão de memória ainda pode ativar o escalonamento de bloqueios. O Mecanismo de Banco de Dados escalona bloqueios de linha ou de página para bloqueios de tabela (ou partição) se a quantidade de memória utilizada pelos objetos de bloqueio exceder uma das seguintes condições:

  • Quarenta por cento da memória que é usada pelo Mecanismo de Banco de Dados, exclusiva de alocação de memória usando AWE (Address Windowing Extension). Isso é aplicável somente quando o parâmetro locks de sp_configure é definido como 0.

  • Quarenta por cento da memória de bloqueio que é configurada usando o parâmetro locks de sp_configure. Para obter mais informações, consulte Definindo opções de configuração do servidor.

Se os sinalizadores de rastreamento 1211 e 1224 forem definidos, o 1211 terá precedência sobre o 1224. Entretanto, como o sinalizador de rastreamento 1211 evita o escalonamento em todos os casos, mesmo sob pressão de memória, recomendamos usar 1224. Isso ajuda a evitar erros de "falta de bloqueios" quando muitos bloqueios são usados.

ObservaçãoObservação
O escalonamento de bloqueios para a granularidade em nível de tabela ou HoBT também pode ser controlado usando a opção LOCK_ESCALATION da instrução ALTER TABLE.

Escopo: global ou sessão

2528

Desabilita a verificação paralela de objetos por DBCC CHECKDB, DBCC CHECKFILEGROUP e DBCC CHECKTABLE. Por padrão, o grau de paralelismo é automaticamente determinado pelo processador de consultas. O grau de máximo de paralelismo é configurado da mesma forma que as consultas paralelas. Para obter mais informações, consulte Opção max degree of parallelism.

DBCC paralelo, em geral, deve permanecer habilitado. Para DBCC CHECKDB, o processador de consultas reavalia e automaticamente ajusta o paralelismo em cada tabela ou lote de tabelas verificadas. Às vezes, a verificação pode iniciar quando o servidor está quase ocioso. Um administrador que sabe que a carga aumentará antes que a verificação seja concluída poderá manualmente diminuir ou desabilitar o paralelismo.

Desabilitar a verificação paralela do DBCC pode fazer com que o DBCC leve mais tempo para ser concluído e se o DBCC for executado com o recurso TABLOCK habilitado e o paralelismo definido como off, as tabelas poderão ser bloqueadas por longo tempo.

Escopo: global ou sessão

3205

Por padrão, se uma unidade de fita oferecer suporte à compactação de hardware, a instrução DUMP ou BACKUP a usará. Com esse sinalizador de rastreamento, é possível desabilitar a compactação de hardware para drivers de fita. Isso é útil quando se deseja trocar as fitas por outros locais ou unidades de fita que não oferecem suporte à compactação.

Escopo: global ou sessão

3226

Por padrão, toda operação de backup bem sucedida acrescenta uma entrada no log de erros SQL Server e no log de eventos do sistema. Se você criar backups de log com frequência, essas mensagens se acumularão rapidamente, resultando em enormes logs de erros nos quais será difícil localizar outras mensagens.

Com este sinalizador de rastreamento, você pode suprimir estas entradas de log. Isso é útil se você estiver executando backups de log frequentes e se nenhum dos seus scripts depender dessas entradas.

3608

Impede que o SQL Server seja iniciado automaticamente e recupere qualquer banco de dados, exceto o banco de dados mestre. Os bancos de dados serão iniciados e recuperados quando acessados. Alguns recursos, como isolamento de instantâneo e instantâneo de leitura confirmada, talvez não funcionem. Use para Movendo bancos de dados do sistema e Movendo bancos de dados de usuário. Não use durante operação normal.

3625

Limita a quantidade de informações retornadas aos usuários que não são membros da função de servidor fixa sysadmin, mascarando os parâmetros de algumas mensagens de erro usando '******'. Isso pode ajudar a evitar a divulgação de informações confidenciais.

Escopo: somente global

4199

Controla as diversas alterações de otimizador de consulta feitas nos diversos sinalizadores de rastreamento. Para obter mais informações, consulte esse artigo do Suporte da Microsoft.

Escopo: global ou sessão

4616

Torna os metadados em nível de servidor visíveis a funções de aplicativo. No SQL Server, uma função de aplicativo não pode acessar metadados fora de seu próprio banco de dados porque as funções de aplicativo não são associadas a um principal em nível de servidor. É uma alteração de comportamento de versões anteriores do SQL Server. Definir esse sinalizador global desabilita as novas restrições e permite que funções de aplicativo acessem metadados em nível de servidor.

Escopo: somente global

6527

Desabilita a geração de um despejo de memória na primeira ocorrência de uma exceção de memória insuficiente na integração de CLR. Por padrão, o SQL Server gera um despejo de memória pequeno na primeira ocorrência de uma exceção de memória insuficiente no CLR. O comportamento do sinalizador de rastreamento é:

  • Se isso for usado como um sinalizador de rastreamento de inicialização, um despejo de memória nunca será gerado. No entanto, um despejo de memória poderá ser gerado se forem usados outros sinalizadores de rastreamento.

  • Se esse sinalizador de rastreamento estiver habilitado em um servidor em execução, um despejo de memória não será gerado automaticamente a partir desse ponto. No entanto, se um despejo de memória já tiver sido gerado devido a uma exceção de memória insuficiente no CLR, este sinalizador de rastreamento não terá nenhum efeito.

Escopo: somente global

7806

Habilita uma conexão de administrador dedicada (DAC) no SQL Server Express. Por padrão, nenhum recurso DAC é reservado no SQL Server Express. Para obter mais informações, consulte Usando uma conexão de administrador dedicada [SQL Server].

Escopo: somente global

Comentários

No SQL Server, há dois tipos de sinalizadores de rastreamento: sessão e global. Os sinalizadores de rastreamento de sessão são ativos para uma conexão e são visíveis apenas para essa conexão. Sinalizadores de rastreamento globais são definidos no nível do servidor e são visíveis em todas as conexões no servidor. Alguns sinalizadores podem ser ativados somente como global e outros podem ser ativados no escopo global ou de sessão.

As seguintes regras se aplicam:

  • Um sinalizador de rastreamento global deve ser habilitado globalmente. Caso contrário, ele não terá nenhum efeito. Recomendamos que você habilite sinalizadores de rastreamento globais na inicialização, usando a opção de linha de comando -T.

  • Se um sinalizador de rastreamento tiver escopo global ou de sessão, ele poderá ser ativado com o escopo apropriado. Um sinalizador de rastreamento habilitado no nível de sessão nunca afeta outra sessão, e seu efeito se perde quando a SPID que abriu a sessão faz logoff.

Sinalizadores de rastreamento são definidos como on ou off usando qualquer um dos seguintes métodos:

  • Usando os comandos DBCC TRACEON e DBCC TRACEOFF.

    Por exemplo, DBCC TRACEON 2528: para habilitar o sinalizador de rastreamento globalmente, use DBCC TRACEON com o argumento -1: DBCC TRACEON (2528, -1). Para desativar um sinalizador de rastreamento global, use DBCC TRACEOFF com o argumento -1.

  • Usando a opção de inicialização -T para especificar que o sinalizador de rastreamento seja definido como on durante inicialização.

    A opção de inicialização -T habilita um sinalizador de rastreamento globalmente. Não é possível habilitar um sinalizador de rastreamento no nível de sessão usando uma opção de inicialização. Para obter mais informações sobre opções de inicialização, consulte Usando as opções de inicialização do serviço do SQL Server.

Use o comando DBCC TRACESTATUS para determinar quais sinalizadores de rastreamento estão ativos atualmente.

Alterações de comportamento

No SQL Server 2000, um DBCC TRACEON (1204) simples é o bastante para habilitar o relatório de deadlock no log de erros. No SQL Server 2008, é necessário habilitar o sinalizador globalmente porque o sinalizador em nível de sessão não está visível para o thread de monitor de deadlock.

Para obter mais informações sobre as alterações no comportamento, consulte Alterações de quebra em recursos do Mecanismo de Banco de Dados no SQL Server 2008 R2.

Exemplos

O exemplo a seguir define o sinalizador de rastreamento 3205 como on usando o DBCC TRACEON.

DBCC TRACEON (3205,-1)

Histórico de alterações

Conteúdo atualizado

Adicionado o sinalizador de rastreamento 4199.