"mainEntityOfPage": { "@type": "WebPage", "@id": "https://yourdomain.com/bases-datos/sql-server-queries.html" } }, { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Inicio", "item": "https://yourdomain.com/index.html" }, { "@type": "ListItem", "position": 2, "name": "Bases de Datos SAP", "item": "https://yourdomain.com/bases-de-datos-sap.html" }, { "@type": "ListItem", "position": 3, "name": "SQL Server", "item": "https://yourdomain.com/bases-datos/sql-server.html" }, { "@type": "ListItem", "position": 4, "name": "Consultas SQL Server (Chuleta)", "item": "https://yourdomain.com/bases-datos/sql-server-queries.html" } ] } ]

Consultas SQL Server

La "Chuleta" para el DBA SQL Server en entornos SAP

Nota de Contexto: Para estos ejemplos asumiremos:
  • SID: PRD
  • Base de Datos: SAP
  • Usuario: sa o cuenta de servicio DOMAIN\sap_service con 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];

Páginas relacionadas

Guía Principal SQL Server

Paralelo: Chuleta de Consultas Oracle

Paralelo: Chuleta de Consultas Sybase ASE