Estos son solo unos que utilizo mucho en mi día a día como DBA y en el camino te aseguro que vas a ir modificando estos y creando tus propios queries, vas a ir aprendiendo a facilitarte el trabajo con querys que vas a ir guardando poco a poco. Te recomiendo utilizar los Gists de GitHub para tener ordenados tus scripts.
Consulta a los objetos de la base de datos
Cuando consultamos la tabla sys.objects vamos a poder obtener información sobre todos los objetos que hemos creado en nuestra base de datos. Cada objeto tiene un id para poder identificarlo y un tipo de objeto (tabla de usuario, tabla de sistema, procedimiento almacenado, primary key, función, vista, etc.) Con estos primeros queries vamos a poder ver la fecha de creación y la fecha en que se modificó el objeto.
Por ejemplo, en este query vemos los objetos tipo P (procedimiento almacenado) que se modificaron en los últimos 7 días.
En otro ejemplo podemos ver los triggers creados o modificados.
SELECT
o.nameas [TriggerName],
CASEWHEN o.type = 'TR'THEN'SQL DML Trigger'WHEN o.type = 'TA'THEN'DML Assembly Trigger'ENDAS [TriggerType],
sc.nameAS [Schema_Name],
OBJECT_NAME(parent_object_id) as [TableName],
o.create_date [TriggerCreateDate],
o.modify_date [Trigger Modified Date]
FROMsys.objects o
INNERJOINsys.schemas sc ON o.schema_id = sc.schema_id
WHERE (type = 'TR'ORtype = 'TA')
AND ( DATEDIFF(D,create_date, GETDATE()) < 7ORDATEDIFF(D,modify_date, GETDATE()) < 7) -- Last 7 days
Como puedes ver en el ejemplo, modificar el query para tus propios requerimientos es muy sencillo.
Actualización rápida de índices
Si quieres actualizar todos los índices de tu base de datos de una forma muy rápida esta puede ser una opción. Aunque siempre te voy a recomendar hacerlo en planes de mantenimiento, esta opción nos puede ayudar principalmente en bases de datos pequeñas y también en servidores con SQL Express.
En este caso el factor de relleno está en 80, el cual es el porcentaje de espacio en cada página de índice para almacenar datos cuando se crea o reconstruye el índice. Si indicamos valor 0 se va a usar el último valor utilizado o el valor configurado como valor por defecto.
Estado del avance de procesos
Otro query que utilizo regularmente es el de avance en procesos.
-- ver avances de procesosSELECT session_id as SPID, command, a.textASQuery, start_time,
percent_complete, dateadd(second,estimated_completion_time/1000,
getdate()) as estimated_completion_time
FROMsys.dm_exec_requests r CROSSAPPLYsys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE',
'BACKUP LOG','DbccFilesCompact',
'DbccSpaceReclaim','DBCC')
En este ejemplo podemos ver el avance en procesos como backups, procesos de mantenimiento como DBCC y restaurar base de datos (‘BACKUP DATABASE’,‘RESTORE DATABASE’, ‘BACKUP LOG’,‘DbccFilesCompact’, ‘DbccSpaceReclaim’,‘DBCC’). Pero estos valores los puedes modificar por otros más, si ejecutamos el query sin where podremos ver más opciones y dependiendo de nuestras necesidades podremos consultar sobre procesos de reconstrucción de índices en bases de datos pesadas. Se usa para ver actividades que pueden durar muchos minutos ya que nos muestra el tiempo transcurrido y un estimado del tiempo pendiente para finalizar un proceso.
Monitoreo del tamaño de la base de datos
Otros queries útiles son para monitorear el tamaño de las bases de datos.
Si ejecutamos el sp_spaceused nos va mostrar el tamaño de la base de datos donde tenemos la sesión actual, se puede utilizar de esta forma o también podríamos incluirlo en algún JOB y que nos alerte eventualmente si llega a algún tamaño.
Una mejor forma de poder obtener el tamaño de nuestras bases de datos y que nos puede mostrar información más útil es el siguiente query:
Nos va a mostrar los datos exactos del tamaño y espacio libre en cada archivo, en el de datos y en el log.
Sígueme en Twitter como @royrojasdev o en mis páginas royrojas.com y dotnetcr.com. Ahí publico regularmente tips y otros queries que te van a ayudar en la optimización de tus bases de datos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.