jueves, 12 de julio de 2018

128. Queries mas pesados en una base de datos

Les dejo un script para determinar los queries mas pesados en una base de datos de Microsoft sql server

SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC

saludos

martes, 26 de junio de 2018

127. Buscar un dato dentro de toda una base de SQL server

Si bien esta es la peor idea que podemos tener, por que si tenemos tablas muy grandes el tiempo de búsqueda será muy alto además que al no tener índices por todas las columnas (ni intenten hacer esto, por que los índices deben estar apegados a los queries, y deberíamos trabajar del índice hacia el query,para tener los campos en orden y realmente poderlos ocupar), sobrecargamos el motor de la base de datos.


Bueno en que momento es necesario, es necesario cuando la base de datos no tiene un modelo, que esta se desarrollo de forma caótica, y que la información se encuentra perdida o duplicada.


Les dejo el Query, úsenlo con cuidado, y si lo van a usar en producción cuiden que no tengan en línea usuarios, que sea en una ventana de tiempo


declare @StrValorBusqueda nvarchar(100)
set @StrValorBusqueda = '[palabra a buscar]'
CREATE TABLE #Resultado (NombreColumna nvarchar(370), ValorColumna nvarchar(3630))
SET NOCOUNT ON
DECLARE @NombreTabla nvarchar(256),
@NombreColumna nvarchar(128),
@StrValorBusqueda2 nvarchar(110)
SET @NombreTabla = ''
SET @StrValorBusqueda2 = QUOTENAME('%' + @StrValorBusqueda + '%','''')
WHILE @NombreTabla IS NOT NULL
BEGIN
print @NombreTabla
SET @NombreColumna = ''
SET @NombreTabla =
(SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @NombreTabla
AND OBJECTPROPERTY(
OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0)
WHILE (@NombreTabla IS NOT NULL) AND (@NombreColumna IS NOT NULL)
BEGIN
--print '----' + @NombreColumna
SET @NombreColumna =
(SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@NombreTabla, 2)
AND TABLE_NAME = PARSENAME(@NombreTabla, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @NombreColumna)
IF @NombreColumna IS NOT NULL
BEGIN
INSERT INTO #Resultado
EXEC
('SELECT ''' + @NombreTabla + '.' + @NombreColumna + ''', LEFT(' + @NombreColumna + ', 3630)
FROM ' + @NombreTabla + ' (NOLOCK) ' + ' WHERE ' + @NombreColumna + ' LIKE ' + @StrValorBusqueda2)
END
END
END
SELECT NombreColumna, ValorColumna FROM #Resultado



Felices líneas

jueves, 5 de abril de 2018

126. ¿Que datos puedo obtener de mi sistema? II (powerShell)

La información del Bios es importante para cualquier administrador del sistema, esta se puede obtener de manera muy sencilla con el siguiente comando

Get-WmiObject -Class Win32_BIOS -ComputerName .


Felices Lineas

lunes, 2 de abril de 2018

125. ¿Que datos puedo obtener de mi sistema? I (PowerShell)

PowerShell nos da un acceso muy grande al sistema operativo, este y los próximos post veremos como obtener las características del equipo en el que estamos trabajando, esto puede ser importante para ver características de rendimiento del sistema

Get-WmiObject -Class Win32_Desktop -ComputerName .

Nos permite ver los escritorios de un equipo en particular


Felices Lineas

miércoles, 28 de marzo de 2018

124. En donde estoy? (PowerShell)

Continuamos con la lista de comandos que tenemos en powershell, para saber en donde nos encontramos (pwd en linux, que también se puede usar en powershell,) usamos el comando

get-location


Felices lineas

123. Alias (PowerShell)

Un alias es una herramienta útil para PowerShell, desde mi perspectiva, no me gusta utilizarlos, ya que mezclan comandos de otras plataformas.

Los alias también nos permiten crear atajos propios sustituyendo un comando por otro mas sencillo, por default powershell ya tiene un conjunto de alias predefinidos, estos los podemos ver por medio del comando

Get-Command -CommandType alias


Un alias propio se define de la siguiente forma

Set-Alias -Name gi_carlos -Value Get-Item

Donde:

Name: es el nombre que daremos al comando en este caso lo invocaremos como gi_Carlos
Value: es el comando al que le definiremos un alias

Es importante recordar que a los parámetros en PowerShell se les antepone un guion


Felices líneas


122 - Limpiar Pantalla (powerShell)

Continuamos con la lista de comandos para PowerShell, esta herramienta es muy poderosa ya que nos permite manejar diversos entornos por medio de scripts, una de sus principales aplicaciones y que veremos mas adelante, es la infraestructura como servicio, es decir podemos crear en Azure una nueva infraestructura alterna en cuestión de minutos, y todo siguiendo una serie de comandos en PowerShell.

Bueno estamos en la etapa básica, y como cuando aprendimos DOS, no podemos correr, si antes no gateamos, asi que hoy veremos el comando

 Clear-Host

Este comando nos permite borrar lo que se encuentre en la pantalla en este momento, si bien Clear-Host, es la versión correcta para un script, dado que sigue la convención de nombres de PowerShell, también podemos usar cls, o clear para efectuar esta misma función.

Felices Lineas

martes, 27 de marzo de 2018

121. Comandos por categorias (PowerShell)

El cmdlet  Get-Command es muy útil dado que nos permite ver todos los comandos que podemos usar en nuestra terminal de power Shell.

si lo ejecutamos como:

Get-Command  *

Podemos ver todos los comandos disponibles, ahora bien recordemos que los nombres de los cmdlet tienen cierta lógica, por lo que por medio de este comando podemos buscar los comandos relacionados

Get-Command  *stop*

Get-Command  *print*

O podemos obtener por tipo de comando

Get-Command -CommandType Function
Get-Command -CommandType cmdlet

Felices lineas

viernes, 23 de marzo de 2018

120. Detener Computadora - Estructura (powerShell)

Una de las cosas que hace que powerShell sea sencillo de aprender es el hecho de que los nombres de sus cmdlets siguen un estándar, este esta formado por un [verbo]-[sustantivo], asi se puede dar una orden especifica para que la computadora ejecute alguna operación, powerShell es muy poderoso, por lo que debemos tener cuidado en su uso.

Un ejemplo de esto es el comando para apagar una computadora, con solo escribir

Stop-Computer

Se apaga el equipo con el que estamos trabajando

Felices Lineas

jueves, 22 de marzo de 2018

119. Ayuda (powerShell)

¿Por que estoy escribiendo una serie de entradas de powershell?

Es sencillo, las consolas son de gran ayuda en el procesamiento, powershell es una herramienta muy poderosa que nos permite controlar realmente el equipo, y no solo en equipo, en la nube (Azure) powershell nos permite una gran interacción, sin embargo, nos hemos vuelto flojos, y si no existe un botón, ya no lo sabemos hacer, aun la gente que emplea Linux, poco a poco usa menos un ambiente de comandos, pero, como desarrolladores, nuestra misión es poder interactuar completamente con el hardware, y powershell nos permite optimizar tareas, controlar procesos, diagnosticar fallas.

Así que empecemos por el principio, ¿Cómo se obtiene ayuda de un cmdlet?

get-help [cmdlet]



Felices líneas