SHRINK (Ejecutado sobre INSTANCIA)
USE <yourdatabasename> GO BACKUP LOG <yourdatabasename> WITH TRUNCATE_ONLY GO DBCC SHRINKFILE (<yourdatabaselogfilename>, 1) GO DBCC SHRINKFILE (<yourdatabasedatafilename>, 1)
FORZAR OWNER DE BD A ‘SA’ (Ejecutado sobre Base de datos)
EXEC sp_changedbowner 'sa'
ó
USE nombre_BD GO sp_changedbowner @loginame = 'sa' GO
FORZAR ROLLBACK (DRENAR USUARIOS), DEJANDO OFFLINE LA BD PARA QUE NO ENTRE NINGUN USUARIO MÁS
(Ejecutado sobre Base de datos)
USE master ALTER DATABASE MiBasedeDatos SET offline WITH ROLLBACK immediate
CHECKEO DE INTEGRIDAD
(Ejecutado sobre Base de datos)
dbcc checkdb WITH data_purity GO dbcc updateusage (0) GO sp_updatestats GO
LISTAR PROCESOS ACTIVOS DE UNA INSTANCIA
SELECT * FROM sys.sysprocesses
LISTAR LOS IDs INTERNOS DE LAS BD DE UNA INSTANCIA
SELECT * FROM sys.sysdatabases
Tamaño de los logs de transacciones
DBCC SQLPERF (LOGSPACE)
Muestra el top 100 de las querys que se ejecutan en la instancia ordenadas por tiempo de trabajo total
SELECT TOP 100 qs.total_worker_time, qs.total_elapsed_time, SUBSTRING(qt.text,qs.statement_start_offset/2, (CASE WHEN qs.statement_end_offset = -1 THEN len(CONVERT(nvarchar(MAX), qt.text)) * 2 ELSE qs.statement_end_offset END -qs.statement_start_offset)/2) AS query_text, qt.dbid, dbname=db_name(qt.dbid), qt.objectid, qs.sql_handle, qs.plan_handle FROM sys.dm_exec_query_stats qs CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt WHERE qs.total_worker_time > qs.total_elapsed_time ORDER BY qs.total_worker_time DESC
LOCALIZAR UNA QUERY QUE HA SIDO LANZADA POR UN PROCESO DE UNA APLICACIÓN
SELECT * FROM sys.sysprocesses ORDER BY cpu DESC
localizando el loginame de la aplicación y en el siguiente comando, filtrando por loginame:
SELECT * FROM sys.sysprocesses WHERE loginame LIKE '%nomi%' ORDER BY cpu DESC
Con el valor del campo sql_handle ejecutamos la query para ver que esta haciendo ese proceso:
USE master; GO SELECT * FROM sys.dm_exec_sql_text (0x0300250024530A09AB82B40068A0000001000000); GO
Con esto podremos ver la query que ha sido lanzada y valorar su plan de ejecución
Top 10 de procedminetios almacenados
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name', d.cached_time, d.last_execution_time, d.total_elapsed_time, d.total_elapsed_time/d.execution_count AS [avg_elapsed_time], d.last_elapsed_time, d.execution_count FROM sys.dm_exec_procedure_stats AS d ORDER BY [total_worker_time] DESC
Comprobar bloqueos de BBDD
SELECT blocking_session_id, wait_duration_ms, session_id FROM sys.dm_os_waiting_tasks WHERE blocking_session_id IS NOT NULL
Comprobar estado de los indices en una BD (en este caso MSDB)
SELECT DB_NAME(database_id), object_id AS objectid, index_id AS indexid, partition_number AS partitionnum, avg_fragmentation_in_percent AS frag, page_count AS paginas, index_type_desc AS tipoIndice FROM sys.dm_db_index_physical_stats (DB_ID(N'msdb'), NULL, NULL , NULL, 'LIMITED') WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0 AND page_count > 100 ORDER BY frag DESC