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

Instalar Driver ODBC SQL Server no Linux

Simples e fácil.

No exemplo abaixo é utilizada a distribuição Red Hat 7.

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #Para evitar conflitos
sudo ACCEPT_EULA=Y yum install msodbcsql17

Você possui alguma outra distribuição de Linux? Consulta na referência oficial abaixo.

Referências:

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

Visualizar configuração dos tipos de criptografia do Kerberos

Galera segue abaixo um script rápido para conferir o valor atual da chave de registro SupportedEncryptionTypes referente a seguinte política de seguranca do Windows:
en-us: “Segurança de rede: Configurar tipos de criptografia permitidos para Kerberos”
pt-br: “Network security: Configure encryption types allowed for Kerberos”

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\kerberos\parameters -Name "SupportedEncryptionTypes"

Referência:
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/network-security-configure-encryption-types-allowed-for-kerberos

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

Testando a memória RAM no Windows Server

O seu sistema operacional não inicializou após um reboot?

Está desconfiado de sua memória RAM?

Para fazer um teste de toda a sua memória RAM existe uma ferramenta nativa no Windows para este propósito.

Abra o prompt de comando como administrador e digite o comando abaixo:


mdsched.exe

Irá aparecer uma janela perguntando se você deseja reiniciar o seu computador e fazer o teste imediatamente ou se você prefere esperar o próximo reboot para realizar o teste.

Quando o seu sistema operacional reinicializar uma tela semelhante será exibida.

image001

Por padrão é executado o teste básico que é mais rápido, mas se você é desconfiado e prefere realizar o teste completo (extendido), pode pressionar a tecla F1, selecionar o teste extendido e aplicar este teste pressionando F10, conforme tela de exemplo abaixo.

image002

Não há uma estimativa correta de tempo para este teste, mas em um servidor com 1TB de memória o teste extendido levou aproximadamente 8 horas.

Após a conclusão do teste o seu sistema operacional será inicializado automaticamente e normalmente.

Para você analisar os resultados dos testes de memória deve abrir o Event Viewer e pesquisar pelo Event Source MemoryDiagnostics-Results, conforme imagem abaixo.

Screen Shot 2018-11-01 at 23.15.22.png

Os resultados serão apresentados nos eventos filtrados, conforme exemplo abaixo.

Screen Shot 2018-11-01 at 23.17.09.png

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: