Queries úteis do SQL Server

Listar e finalizar queries em execução

Para listar as queries em execução

SELECT      sqltext.TEXT,
            req.session_id,
            req.status,
            req.command,
            req.cpu_time,
            req.total_elapsed_time
FROM        sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
AS          sqltext;

Para finalizar uma query, use o session_id

KILL [session_id]

Listar tamanho e quantidade de registros de todas as tabelas

SELECT
    t.NAME AS Entity,
    p.rows AS Records,
    SUM(a.total_pages) * 8 AS TotalSpaceKB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB,
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
    sys.tables t
INNER JOIN
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
    sys.schemas s ON t.schema_id = s.schema_id
WHERE
    t.NAME NOT LIKE 'dt%'
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255
GROUP BY
    t.Name, s.Name, p.Rows
ORDER BY
    Records DESC;

referência: stackoverflow

Adicionar quebra de linha

SELECT 'First Line' + CHAR(13)+CHAR(10) + 'Second Line';

CHAR(13) é o mesmo que CR. Para seguir a quebra de linha CRLF no Windows, você precisa de CHAR(13)+CHAR(10).

E se eu não estiver vendo a quebra de linha?

Ao executar as queries no Management Studio, temos duas formas de visualizar os resultados: em modo grid e em modo texto.

Ao visualizar em modo grid, o Management Studio não mostra a quebra de linha.

resultado em grid

Mas quando visualizamos em modo texto, a quebra ocorre, como deveria.

resultado em texto

Mas e a minha aplicação?

Se você usar essa dica em uma aplicação desenvolvida por você, será necessário tratar o resultado da query e exibir os caracteres de quebra de linha da forma que desejar. Por exemplo, se você estiver desenvolvendo uma aplicação web, pode, na camada de visualização, substituir as quebras de linha por <br/>.

Uptime do servidor

SET
NOCOUNT
   ON  DECLARE @crdate DATETIME,
   @hr VARCHAR(50),
   @min VARCHAR(5)  SELECT
      @crdate=crdate
FROM
   sysdatabases
WHERE
   NAME='tempdb'  SELECT
      @hr=(DATEDIFF ( mi,
      @crdate,
      GETDATE()))/60  IF ((DATEDIFF ( mi,
      @crdate,
      GETDATE()))/60)=0  SELECT
         @min=(DATEDIFF ( mi,
         @crdate,
         GETDATE()))
         ELSE  SELECT
            @min=(DATEDIFF ( mi,
            @crdate,
            GETDATE()))-((DATEDIFF( mi,
            @crdate,
            GETDATE()))/60)*60  PRINT 'The server "' + CONVERT(VARCHAR(20),
            SERVERPROPERTY('SERVERNAME'))+'" is up for '+@hr+' hours and '+@min+' minutes.';