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 freqüê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çã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:
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çã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 freqüê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 freqüentes 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 em mensagens de erro. Para obter mais informações, consulte Configuração de visibilidade de metadados. Escopo: somente global |
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 é:
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 em recursos do Mecanismo de Banco de Dados que causam interrupção no SQL Server 2008.
Exemplos
O exemplo a seguir define o sinalizador de rastreamento 3205 como on usando o DBCC TRACEON.
DBCC TRACEON (3205,-1)