TRACE FLAGS

As trace flags são utilizadas para mudar uma característica da instância de SQL Server ou um comportamento em particular.

Elas também são utilizadas em diagnósticos de problemas de desempenho, debug de stored procedures ou até mesmo podem ser recomendadas pelo suporte da Microsoft para corrigir um comportamento específico que esteja impactando negativamente o seu ambiente.

É uma boa prática sempre realizar o teste da trace flag em um ambiente não-produtivo, assim como é uma boa prática realizar o teste em ambiente não-produtivo de qualquer alteração de configuração na sua instância de SQL Server.

Existem 3 escopos para uma trace flag:

1. query: específicas para o contexto de uma consulta.
2. session: ativas para uma conexão específica e são visíveis apenas dentro desta sessão.
3. global: são ativas para toda a instância de SQL Server e visíveis para todas as conexões.

As trace flags de escopo de sessão (session) são ligadas e desligadas com os comandos abaixo:
Como ligar uma trace flag de sessão:

DBCC TRACEON (3604)

Como desligar uma trace flag de sessão:

DBCC TRACEOFF (3604)

Para ligarmos e desligarmos uma trace flag de escopo global utilizamos os mesmos comandos, mas com um parâmetro adicional, conforme abaixo.

Como ligar uma trace flag global:

DBCC TRACEON (1222, -1)

Como desligar uma trace flag global:

DBCC TRACEOFF (1222, -1)

Precisa listar todas as trace flags ativas no seu ambiente e sessão?
Listar TRACE FLAGS ativas

Você utiliza alguma trace flag no seu ambiente?
Comente as trace flags que você utiliza!

Referências:

Trace flags: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

DBCC TRACEON: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-transact-sql

DBCC TRACEOFF: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceoff-transact-sql

 

SELECT – Ordem lógica de execução

Você sabe a ordem lógica que um comando SELECT é executado internamente?

A seguir você pode comparar as duas ordens das consultas, a ordem correta da sintaxe e a ordem lógica de processamento que acontece internamente sem percebermos.

Ordem correta da sintaxe:
8. SELECT
9. DISTINCT
11. TOP
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
10. ORDER BY

Ordem lógica de processamento:
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP

OBS: Esta ordem geralmente é verdadeira, mas existem cenários específicos que esta ordem pode variar.

É exatamente por causa desta ordem que não é possível dar um alias para uma coluna na cláusula SELECT e fazer referência ao alias na cláusula WHERE.

Mas também é por causa desta ordem que podemos dar um alias para uma coluna na cláusula SELECT e fazer referência a este alias na cláusula ORDER BY.

Referências:
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql

Remover acentos e cedilhas de uma string

Simples. Basta utilizarmos um COLLATION diferente que não contenha acentos e cedilhas, conforme o exemplo abaixo.


SELECT 'çáéíóúâêîôûãõç' COLLATE SQL_Latin1_General_Cp1251_CS_AS AS [string]

Resultado:

Screen Shot 2019-02-28 at 22.58.57

Espero que tenham gostado!