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!

Procurar stored procedure, view ou function por um trecho de código

O título já diz tudo. Para procurar um objeto por meio de um trecho de código do mesmo vamos utilizar a DMV sql_modules.


SELECT
object_id,
object_name([object_id]) AS name,
definition
FROM sys.sql_modules
WHERE definition like '%BackupFULL%'

Será exibido o ID, nome e definição/código do objeto, conforme imagem abaixo.

Screen Shot 2019-02-28 at 22.45.16

Listar TRACE FLAGS ativas

Precisa conferir quais trace flags estão ativas no seu SQL Server?
Execute a consulta abaixo na sua instância de SQL Server:

DBCC TRACESTATUS()

O retorno será parecido com o exemplo abaixo:

tflags01

Maiores detalhes do que significa cada coluna podem ser encontrados na documentação oficial no link a seguir: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-tracestatus-transact-sql?view=sql-server-2017
Alternativamente você também pode conferir as trace flags configuradas utilizando o SQL Server Configuration Manager, navegando nas propriedades da instância e conferindo a aba “Startup Parameters”, conforme exemplo abaixo:

tflags02

 

Não sabe o que é uma trace flag?
Confira na documentação oficial da Microsoft no link abaixo:
https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-2017

Movendo a database tempdb

Precisando mover a tempdb de disco ou diretório?

Basta apenas seguir estes 4 passos.

  • Confira os nomes lógicos dos arquivos e seus respectivos caminhos;
SELECT name, physical_name, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb')
  • Para cada arquivo da tempdb altere o seu caminho. Se você tem mais arquivos configurados para a sua tempdb altere o local para cada um destes arquivos também utilizando o mesmo modelo dos comandos abaixo.
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'NovoCaminho\tempdb.mdf')
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'NovoCaminho\templog.ldf')
  • Reinicie sua instância de SQL Server;
  • Confira se os arquivos da tempdb já estão utilizando o novo caminho configurado.
SELECT name, physical_name, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb')

Referências:

 

Conferir a utilização de recursos específicos da edição Enterprise do SQL Server

Para conferirmos a utilização de recursos específicos da edição Enterprise do SQL server é muito simples.

Podemos utilizar a DMV sys.dm_db_persisted_sku_features para listar os recursos que são específicos de acordo com a edição do SQL Server. Uma database que utiliza um destes recursos não pode ser movida para uma edição que não os suporte.

select *
from sys.dm_db_persisted_sku_features

Nas imagens abaixo temos 3 exemplos de recursos de edições específicas do SQL Server: Compression, ColumnStoreIndex e Partitioning.

É isso galera. Simples, rápido e fácil. Espero que tenham gostado.

Resolvendo o alerta Network Binding Order da instalação do SQL Server no Windows Server 2016

Precisando ajustar a ordem de prioridade das interfaces de rede no Windows Server 2016 para remover o alerta da instalação do SQL Server e não encontrou a antiga interface gráfica para realizar este ajuste?

Está no lugar certo.

Screen Shot 2017-08-24 at 02.14.03

Com a ajuda dos comandos abaixo capture o GUID da sua interface de rede que você quer colocar como preferencial.


ipconfig /all

Screen Shot 2017-08-24 at 02.21.30


wmic nicconfig get description, SettingID

Screen Shot 2017-08-24 at 02.22.01

Agora para editar a ordem das interfaces você deve navegar até a chave abaixo do registro do Windows com a ferramenta regedit:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\

Agora edite o valor Bind do tipo REG_MULTI_SZ desta chave deixando a interface prioritária em cima, conforme exemplo abaixo:

Screen Shot 2017-08-24 at 02.28.14

Agora execute novamente a instalação do SQL Server e esta pendência terá sido resolvida.

Screen Shot 2017-08-24 at 02.30.12

É isso galera. Espero que tenham gostado!