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

118. Borrar paquetes y app instalados (powerShell)

Las aplicaciones universales son muy útiles y siguen siendo la evolución de las aplicaciones de escritorio, dado que estas se pueden instalar en equipos de distintas características, pese a que ya no existe Windows Phone, existen otros dispositivos en los que una aplicación universal es muy útil.

Sin embargo como desarrolladores muchas veces la instalación de las aplicaciones puede quedar corrupta, y hacer que la desinstalación no sea un proceso sencillo, para desinstalar un paquete por powershell debemos ejecutar el siguiente comando:

Remove-AppxPackage -Package "package1_1.0.0.0_neutral__8wekyb3d8bbwe"

El nombre del paquete debe ser determinado por medio del comando mostrado en la entrada 117 de este blog

Felices lineas