Consultas útiles en SQL Server.

Hay veces que cambias de Sistema Gestor de Bases de Datos por necesidades del guión. Siempre hay consultas útiles que tiendes a buscar una y otra vez, y reutilizarlas hasta la saciedad.

A mí me pasa con las siguientes en SQL Server (Transact-SQL):

Mira las últimas queries ejecutadas y el tiempo en segundos y número de filas afectadas

SELECT	deqs.last_execution_time AS [Time], 
		dest.TEXT AS [Query],   
		total_worker_time/1000000 as [Segundos], 
		total_rows as [Filas]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY [FILAS] DESC;

Últimas QUERIES y USUARIOS

SELECT conn.session_id, sson.host_name, sson.login_name, 
 sqltxt.text, sson.login_time,  sson.status
FROM sys.dm_exec_connections conn
INNER JOIN sys.dm_exec_sessions sson 
ON conn.session_id = sson.session_id
CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS sqltxt;

Reiniciar índices en tabla (por ejemplo, después de vaciarla).

DBCC CHECKIDENT (***NOMBRE_TABLA***, reseed, 0);

Esto último lo he visto con reseed a 0 y a 1. Creo que lo correcto es a 0, porque el siguiente id será el 1.

Además, podemos querer ordenar en orden natural los resultados. A veces con un ORDER BY no nos sirve. Por ejemplo si la longitud es distinta y ordenamos un campo varchar nos llegaría a salir la ordenación de los datos 2, 1, 122, 222, como:

1
122
2
222

Esto está claramente mal, para este caso podemos usar:

ORDER BY LEN(nombre_columna), nombre_columna;

Y así obtendremos los resultados ordenados de la siguiente manera:
1
2
122
222