Trace Flags

Vamos abordar nesse post um assunto bem voltado à administração de Banco de Dados, vamos falar de Trace Flags e citar algumas mais importantes.

Trace Flags são utilizadas para definir comportamentos da instância ou da sessão no SQL Server. Há dois tipos de Trace Flag: Globais e de Sessão. As Trace Flags de Sessão são utilizadas somente no contexto da determinada sessão. As Trace Flags Globais são utilizadas a nível de instância e ativas para todas as conexões do SQL Server.

Há duas maneiras possíveis recomendadas para habilitar Trace Flags:

  • Via T-SQL:

Com os comandos abaixo, com DBCC (Database Consistency Checker). O primeiro exemplo está habilitando a Trace Flag 1222. O segundo exemplo está desabilitando as Trace flags 1222 e 3608.

                   DBCC TRACEON (1222)

                   DBCC TRACEOFF (1222, 3608)

  • Via SQL Server Configuration Manager:

Vá no “SQL Server Configuration Manager” > SQL Server Services > Botão direito no serviço “SQL Server” referente à instância que você deseja habilitar Trace Flag > Propriedades > Aba “Start Up Parameters” > Digite “-T” acrescido da Trace Flag que deseja (no exemplo abaixo, utilizada a Trace Flag 1204) > Clique em “Add” > Clique em “Apply” > Clique em “OK”.

1

 

 

Alguns exemplos de Trace Flags e como funcionam:

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, quando ocorre Deadlock na instância.

Serão gravadas no Log do SQL Server informações referentes a database, recurso, objeto, página, o script que estava sendo executado, o SPID da transação, tempo de espera,  aplicação origem da transação, hostname, loginname, dentre outros.

Obs.: Deadlocks são situações de bloqueios permanentes onde dois ou mais processos ficam aguardando por outro recurso com lock, devido a outro processo que está reservando esse recurso para si. E com isso, a transação que está aguardando o recurso, é abortada.

1

 

 

3608

Utilizado para não ocorrer inicialização e recuperação de qualquer Banco de Dados que não seja o MASTER. Ou seja, com essa Trace Flag habilitada, ocorrerá inicialização apenas do MASTER quando iniciar o serviço do SQL Server, os demais BD não.

Essa Trace Flag pode ser de grande utilidade, por exemplo, caso você tenha seu Banco de Dados MASTER no disco C:\ de seu servidor, e os demais System Databases ou User Databases em outra unidade. Se a outra unidade falhar, você pode usar essa Trace Flag para subir o serviço do SQL Server, pois o único requisito para subir o SQL será o Banco de Dados MASTER, não haverá validação de outros Bancos de Dados.

Supondo um cenário em que a unidade que hospeda a TEMPDB falha, onde não é possível recuperar o Disco.

Com a Trace Flag habilitada, é possível iniciar a Instância, executar o SQLCMD e alterar o local dos arquivos da tempdb para outra unidade e após isso, a Instância do SQL Server funciona corretamente.

 Use para Mover System Databases e User Databases. Não use durante operação normal.

3625

Limita as informações de mensagens de erro que são retornadas para os usuários que não fazem parte da Server Role SYSADMIN, mascarando os parâmetros das mensagens de erro. Mitigando assim, acesso a informações de sistema.

Com a Trace Flag desativada, é exibida mensagem de erro com as informações de erro.

1

Com a Trace Flag ativada, a consulta não retorna erros, porém não retorna os dados, mesmo que tenha dados.

2

Com Trace Flag habilitada, com usuário SYSADMIN, a consulta funciona normalmente.

3

1204

Muito semelhante a Trace Flag 1222, grava informações de Deadlock, porém mais voltadas aos nós envolvidos no Deadlock, e não traz em XML.

1211

Desabilita “Lock Escalation” baseado em Memory Pressure ou no número de bloqueios. O SQL Server não escalona bloqueio de linhas ou página para bloqueios de tabelas, assim sendo, com bloqueios em nível mais baixo, ocorrerá maior número de bloqueios, porém pode evitar outros diversos que escalonaria a tabela por inteiro, não só o nível específico.

1224

Desabilita o “Lock Escalation” com base no número de bloqueios.Nesse caso, a Memory Pressure ainda pode ativar o escalonamento de bloqueios. Com essa Trace Flag, quando ocorre bloqueio de linha ou de página, o SQL Server escalona para bloqueio da tabela se a quantidade de memória utilizada para isso exceder as seguintes condições:

– 40% da memória utilizada pelo SGBD;

– 40% da memória de bloqueio que é configurada usando o parâmetro locks, de sp_configure.

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 (Opção MAX OF DEGREE OF PARALELISM).

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.

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s