Ejercicio MSSQL: Retorna todos los procesos que estan ejecutandose en el motor de base de datos
Enviado por ThomasWayne • 2 de Agosto de 2020 • Tarea • 535 Palabras (3 Páginas) • 102 Visitas
Ejercicio MSSQL:
Retorna todos los procesos que estan ejecutandose en el motor de base de datos.
Codigo:
ALTER PROCEDURE [dbo].[procesos_en_bbdd]
AS
BEGIN
--Agregue SET NOCOUNT ON para evitar que conjuntos de resultados adicionales
--interfieran con las instrucciones SELECT.
SET NOCOUNT ON;
SELECT
[Session ID] = s.session_id,
[User Process] = CONVERT(CHAR(1), s.is_user_process),
[Login] = s.login_name,
[Database] = case when p.dbid=0 then N'' else ISNULL(db_name(p.dbid),N'') end,
[Task State] = ISNULL(t.task_state, N''),
[Command] = ISNULL(r.command, N''),
[Application] = ISNULL(s.program_name, N''),
[Wait Time (ms)] = ISNULL(w.wait_duration_ms, 0),
[Wait Type] = ISNULL(w.wait_type, N''),
[Wait Resource] = ISNULL(w.resource_description, N''),
[Blocked By] = ISNULL(CONVERT (varchar, w.blocking_session_id), ''),
[Head Blocker] =
CASE
-- la sesión tiene una solicitud activa, está bloqueada, pero está bloqueando a otros o la sesión está inactiva, pero tiene una transacción abierto y está bloqueando a otros.
WHEN r2.session_id IS NOT NULL AND (r.blocking_session_id = 0 OR r.session_id IS NULL) THEN '1'
-- la sesión no está bloqueando a alguien, o está bloqueando a alguien, pero está bloqueada por otra persona.
ELSE ''
END,
[Total CPU (ms)] = s.cpu_time,
[Total Physical I/O (MB)] = (s.reads + s.writes) * 8 / 1024,
[Memory Use (KB)] = s.memory_usage * (8192 / 1024),
[Open Transactions] = ISNULL(r.open_transaction_count,0),
[Login Time] = s.login_time,
...