SQL Server Start Time

Para conferir o horário de início do serviço da sua instância de SQL Server basta utilizar um dos scripts abaixo.

SELECT sqlserver_start_time
FROM sys.dm_os_sys_info;

SELECT login_time
FROM sys.dm_exec_sessions
WHERE session_id = 1;

SELECT create_date
FROM sys.databases
WHERE name = 'tempdb';

Gostou? Dúvidas? Críticas?
Deixe seu comentário!

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!

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: