- SID:
PRD - Base de Datos:
SAP - Usuario:
sao cuenta de servicioDOMAIN\sap_servicecon permisos de administración.
Guía de uso rápido para las Dynamic Management Views (DMVs) y consultas T-SQL fundamentales en la administración diaria de SAP sobre SQL Server.
1. Información y Diagnóstico de Sesiones
Monitorización de Peticiones Actuales
Muestra qué queries se están ejecutando ahora mismo, su base de datos y consumo de recursos.
SELECT r.session_id, r.start_time, r.total_elapsed_time, r.cpu_time,
r.reads, r.writes, r.logical_reads, r.status,
t.text AS [Query Text]
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id > 50; -- Eliminar procesos de sistema
Quién está conectado (sp_who2 alternativo)
Versión moderna para identificar usuarios, programas y estados de conexión.
SELECT session_id, login_name, host_name, program_name, status FROM sys.dm_exec_sessions WHERE is_user_process = 1;
2. Almacenamiento y tempdb
Uso de Espacio en Archivos de Base de Datos
Verifica el tamaño actual y el espacio libre dentro de los archivos .mdf y .ldf.
SELECT name, size/128.0 AS [Total_Size_MB],
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS [Free_Space_MB],
physical_name
FROM sys.database_files;
Monitorización de tempdb
Crítico para SAP: ¿cuántas páginas libres quedan en nuestra DB temporal?
SELECT SUM(unallocated_extent_page_count) * 8 / 1024 AS [Free_Space_MB],
SUM(user_object_reserved_page_count) * 8 / 1024 AS [Used_by_User_Objects_MB],
SUM(internal_object_reserved_page_count) * 8 / 1024 AS [Used_by_Internal_Objects_MB]
FROM sys.dm_db_file_space_usage;
3. Rendimiento (Performance Metrics)
Page Life Expectancy (PLE)
Indica presión de memoria. Si el valor es <300 permanentemente, falta RAM.
SELECT cntr_value AS [Page Life Expectancy] FROM sys.dm_os_performance_counters WHERE object_name LIKE '%Buffer Manager%' AND counter_name = 'Page life expectancy';
Estadísticas de Espera (Wait Stats)
Identifica por qué está esperando el servidor (I/O, Red, Bloqueos).
SELECT TOP 10 wait_type, wait_time_ms / 1000 AS [Wait_Sec],
100.0 * wait_time_ms / SUM(wait_time_ms) OVER() AS [Percentage]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN ('SLEEP_TASK', 'BROKER_EVENT_HANDLER', 'WAITFOR', 'CHECKPOINT_QUEUE')
ORDER BY wait_time_ms DESC;
4. Bloqueos y Troubleshooting
Detectar Bloqueos Activos
Muestra qué sesión está bloqueando a quién y por cuánto tiempo.
SELECT session_id, blocking_session_id, wait_type, wait_time, last_wait_type FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
Terminar Sesión (Kill Process)
Comando estándar para finalizar un proceso bloqueante pesado.
-- Reemplazar ID con el valor de session_id KILL [ID];