2015/11/06

SQL Server - Quién esta conectado a la base de datos y desconectar

1. Si usted quiere saber que usuarios tienen conexiones abiertas en una base de datos, puede incluir cláusula WHERE dbid = db_id ('AdventureWorks2012').

2. Debe tener cuidado y excluir su propia conexión por ejemplo, y spid <> 55 (mi id de conexión).

3. Ejemplo:
DECLARE @kill VARCHAR(8000)='';
SELECT @kill = @kill+'kill '+CONVERT(VARCHAR(5) ,spid)+';'
FROM   MASTER..sysprocesses
WHERE  dbid = DB_ID('AdventureWorks2012')
       AND spid<>55

PRINT @kill

EXEC (@kill);

2015/11/05

Android - Listado de códigos secretos

Casi desde el nacimiento de los teléfonos móviles existen códigos secretos para activar diversas funciones y realizar diferentes diagnósticos. A continuación recopilamos un listado de aquellos códigos conocidos para Android, algunos específicos y sólo funcionales para algunos fabricantes. ¿Conoces alguno más?.
Información del dispositivo

*#06# : Visualización del número IMEI del dispositivo 
*#*#1111#*#* : Información sobre la versión de software FTA
*#*#2222#*#* : Información sobre la versión del hardware FTA 
*#*#1234#*#* : Información sobre la versión de software PDA y de firmware  
*#*#232337#*#* : Muestra la dirección Bluetooth del smartphone
*#*#232338#*#* :  Muestra la dirección MAC del la tarjeta WiFi del dispositivo
*#*#2663#*#* : Visualiza la versión de la pantalla táctil del smartphone  
*#*#3264#*#* : Muestra que versión de memoria RAM está disponible en el smartphone o la tablet
*#*#34971539#*#* : Visualiza la información detallada de las cámaras disponibles en el dispositivo
*#*#44336#*#* : Permite la visualización de la fecha de compilación y su lista de cambios
*#*#4636#*#* : Muestra estadística de uso, manejo de la batería, opciones avanzadas de conexiones (wifi, bluetooh, redes móviles) entre otras opciones.
*#*#4986*2650468#*#* : Al ingresar este código se puede ver la información de firmware, hardware, PDA y de RF Call Date del dispositivo 
*#12580*369# : Información detallada del software y hardware del dispositivo 
*#7465625# : Visualiza el estado actual de bloqueo del teléfono
*#872564# : Muestra información y estadísticas sobre el logging USB  

Pruebas

*#*#0*#*#* : Permite la ejecución de un test para la pantalla LCD
*#*#0842#*#* : Pruebas de iluminación a la pantalla y pruebas de vibración
*#*#0283#*#* : Prueba de bucle de los paquetes de datos
*#*#0588#*#* : Realiza una prueba de detector de proximidad
*#*#1472365#*#* : Realiza una prueba rápida del GPS
*#*#1575#*#* : Pruebas avanzadas al GPS del dispositivo
*#*#232331#*#* : Ejecuta pruebas sobre Bluetooth
*#*#232339#*#* :  Pruebas las redes Wireless
*#*#2664#*#* : Pruebas sobre la pantalla táctil del dispositivo
*#*#3424#*#* : Programa de pruebas de función HTC Run
*#*#7262626#*#*: Con este código se ejecuta un test de campo o arranque del dispositivo
##33284# : Realiza la prueba de campo
##3424# : Ejecutar el modo de diagnóstico

Menús ocultos

*#0*# : Acceso al menú de servicios de los últimos dispositivos Samsung Galaxy 
*#*#8255#*#* : Acceso al monitor del servicio Google Talk
*#301279# : Este código permite ingresar al Menú de control HSPA/HSUPA para seleccionar tipos de redes
##3282# : Muestra el menú EPST 
##7764726 : Menú de servicio oculto para Motorola Droid
##778 (+tecla de llamada) : Esta opción permite visualizar el menú EPST  

Acciones

*#*#273282*255*663282*#*#* : Hacer una copia de seguridad inmediata de todos los archivos multimedia almacenados en el dispositivo.
*#*#7594#*#* : Con este código se puede apagar el teléfono inmediatamente
*2767*3855# : Formato dispositivo al estado de fábrica (se borrará todo el teléfono)
*#*#7780#*#* : Restablecer la partición de datos / estado de fábrica
*#*#8351#*#* : Permite activar y visualizar el modo de registro en la marcación por voz
*#*#8350#*#* : Desactiva el registro del anterior código, la marcación por voz
*#9090# : Configuración de diagnóstico en el dispositivo
*#9900# : Código para entrar en el “Modo Dump” del sistema
**05**# : Lanza la pantalla de emergencia para desbloquear el código PUK
###8626337 : Ejecutar VOCODER
##786# : Apoyo Logístico inversa
*#*#197328640#*#* : Activar el modo “Prueba de servicio”

Fuente: http://www.hackplayers.com//

2015/10/01

SQL - Lista de procedimientos almacenados modificados en los últimos 7 días

Este sencillo script ayuda a identificar los procedimientos almacenados que se han cambiado / modificado en los últimos 7 días.
SELECT *
FROM   sys.objects
WHERE  TYPE = 'P'
       AND DATEDIFF(D ,modify_date ,GETDATE())<7

2015/08/13

Windows 10 - Todos los Atajos de Teclado

El pasado 29 de julio Microsoft lanzó mundialmente Windows 10 la nueva versión de su plataforma que cuenta con características bastante interesantes. Lo novedoso de este nuevo sistema, es que se ha puesto a disposición de forma gratuita con el objetivo de lograr 1.000 millones de usuarios en los próximos dos años.

Windows 10 debutará primero en ordenadores y tabletas pero está diseñado también para funcionar en los teléfonos móviles y consolas de juegos. Entre algunas de sus nuevas funciones podemos mencionar el nuevo navegador Edge, así como la versión para ordenadores de Cortana, la asistente de voz de la compañía. Por su parte, Windows 10 ha reintroducido el menú de inicio (Start) a través del que los usuarios podrán acceder a las aplicaciones y funciones que más utilizan.

Parece que el ritmo de adopción de Windows 10 está siendo rápido, y las previsiones lo sitúan como el próximo líder en cuota de mercado. Si eres un asiduo al sistema y lo necesitas para trabajar, atento a los siguientes atajos de teclado que te permitirán ir mucho más rápido por sus diferentes menús y funciones.

Sistema
- Windows + I: Abrir la configuración del sistema.
- Windows + C: Ejecutar el asistente virtual Cortana para interactuar con comandos de voz.
- Windows + S: Ejecutar el asistente virtual Cortana para interactuar con comandos escritos.
- Windows + R: Abrir el cuadro de diálogo “Ejecutar”.
- Windows + X: Mostrar el menú contextual del menú de Inicio.

Ventanas
- Windows + Flecha izquierda / derecha / arriba / abajo: Seccionar la pantalla en varios cuadrantes.
- Windows + Tabulador: Visualizar todas las ventanas abiertas.
- Alt + Tabulador: Cambiar entre las diferentes ventanas abiertas.

Escritorios virtuales
- Tecla Windows+Ctrl+D: crea un nuevo escritorio virtual.
- Tecla Windows+Ctrl+Izquierda: desplazarse al escritorio de la izquierda.
- Tecla Windows+Ctrl+Derecha: desplazarse al escritorio de la derecha.
- Tecla Windows+Ctrl+F4: cerrar el escritorio actual.
- Tecla Windows+Tab: visualizar todos tus escritorios y aplicaciones.

Cortana y ajustes
- Tecla Windows+Q: inicia Cortana lista para recibir órdenes de voz.
- Tecla Windows+S: inicia Cortana lista para recibir órdenes escritas.
- Tecla Windows+I: abre la página de ajustes de Windows 10.
- Tecla Windows+A: abre el centro de acciones (o notificaciones) de Windows.
- Tecla Windows+X: abre el menú contextual del botón de inicio.

Atajos clásicos
- Tecla Windows+: temporalmente esconde todas las aplicaciones para mostrar el escritorio.
- Tecla Windows+D: minimizar todas las aplicaciones para ir directamente al escritorio.
- Ctrl+Shift+M: restaurar todas las aplicaciones minimizadas (muy útil después de Win + D).
- Tecla Windows+Home: minimizar todas las ventanas excepto la que estás usando.
- Tecla Windows+L: bloquear tu PC e ir a la ventana de bloqueo.
- Tecla Windows+E: abrir el explorador de archivos.
- Alt+Arriba: subir un nivel en el explorador de archivos.
- Alt+Izquierda: ir a la carpeta anterior en el explorador de archivos.
- Alt+Derecha: ir a la siguiente carpeta en el explorador de archivos.
- Alt+Tab: cambiar de ventana (mantén presionado Alt mientras presionas Tab para elegir visualmente a cuál ventana dirigirte).
- Alt+F4: cerrar la ventana actual.
- Tecla Windows+Shift+Izquierda (o Derecha): mover una ventana a tu siguiente monitor.
- Tecla Windows+T: cambiar de aplicación entre las que se encuentran en la barra de tareas (presiona Enter para elegir).
- Tecla Windows+Cualquier tecla numeral: abrir la aplicación de tu barra de tareas ubicada en esa posición.

Imágenes, vídeo y pantallas
- Tecla Windows+PrtScr: tomar una captura de pantalla y enviarla directo a tu carpeta de imágenes
- Tecla Windows+G: iniciar la aplicación de DVR para grabar la pantalla (siempre y cuando tu tarjeta gráfica lo soporte).
- Tecla Windows+Alt+G: inicia la grabación de pantalla en la ventana que te encuentras.
- Tecla Windows+Alt+R: detener la grabación.
- Tecla Windows+P: cambiar entre modo de pantalla secundaria (si tienes otro monitor conectado).
- Tecla Windows+tecla de “mas”: ampliar o acercar la pantalla usando la lupa virtual.
- Tecla Windows+tecla de “menos”: alejar o disminuir la pantalla usando la lupa virtual.

Explorar Windows a fondo
- Ctrl+Shift+Esc: abrir el administrador de tareas de Windows.
- Tecla Windows+R: abrir la caja de diálogo “Ejecutar”.
- Shift+Borrar: borrar archivos permanentemente sin enviarlos a la papelera de reciclaje.
- Alt+Enter: mostrar las propiedades del artículo seleccionado.
- Tecla Windows+U: abrir el centro de acceso fácil.
- Tecla Windows+Espacio: cambiar el idioma del teclado.
- Tecla Windows+Ctrl+Shift+cualquier tecla numeral: abrir la aplicación de tu barra de tareas ubicada en esa posición, pero con permisos de administrador.

Fuente: http://www.muypymes.com/

2015/08/05

Windows 10 - Activa el modo Dios

El modo dios o 'God Mode' es una forma sencilla de acceder a todas las configuraciones de tu Windows desde un sólo lugar a un clic de distancia.

Para Activar el Modo Dios debes:

     1. Ve al un lugar en tu computador, como el escritorio.
     2. Crea una nueva carpeta.
     3. Luego dale el nombre a la carpeta GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
     4. Listo, ya tienes todas las opciones en un sólo lugar.

2015/07/20

Windows 8 - Crear un Punto de Acceso Wi-Fi Para Compartir Internet

Es posible que en algunas ocasiones necesitemos crear un punto de acceso en nuestro Windows 8 de manera que otros dispositivos como una tablet o un smartphone que por defecto no reciben buena señal del router puedan tener conexión a Internet a través de nuestro equipo. En este artículo vamos a explicar paso a paso cómo llevar a cabo el proceso de compartir una conexión a Internet por cable a través de un punto de acceso Wi-Fi.

Para realizar esto necesitaremos:

   - Un ordenador con Windows 8 conectado por cable al router o a otra red.
   - Una tarjeta Wi-Fi que será la que actuará como punto de acceso.

Con estos requisitos ya podemos comenzar a crear nuestra conexión puente que nos permita compartir nuestra conexión a Internet desde una tarjeta Wi-Fi conectada al ordenador.

Configurar la conexión puente entre la tarjeta de red y la tarjeta Wi-Fi
Lo primero que debemos hacer es “puentear” los dos dispositivos que vamos a utilizar: por un lado nuestra tarjeta de red y por otro la tarjeta Wi-Fi. Para ello lo primero que debemos hacer es abrir el centro de redes y recursos compartidos de nuestro Windows 8.
En el menú de la izquierda seleccionamos “cambiar configuración del adaptador” para ver todos nuestros adaptadores de red.
A continuación seleccionaremos a la vez los dos dispositivos a puentear. Pulsaremos con el botón derecho con ambos puenteados y elegiremos la opción “conexiones de puente”.
Esperaremos a que nuestro sistema operativo cree el nuevo conmutador.
Una vez finalice ya tendremos la conexión puente lista para funcionar.
Lo siguiente que debemos hacer es crear un punto de acceso ad-hoc en nuestro Windows a través de la tarjeta Wi-Fi de manera que otros dispositivos puedan conectarse a nuestro equipo.

Configurar el punto ad-hoc en Windows 8
En otros sistemas como Windows 7 todo esto puede hacerse desde el apartado de crear una nueva conexión, sin embargo, con la llegada de Windows 8 estas opciones han sido eliminadas por lo que debemos recurrir a un terminal para poder realizar estos ajustes.

Lo primero que haremos será abrir una ventana de MS-DOS con permisos de administración para ejecutar los siguientes comandos.

Antes de configurar este tipo de red debemos asegurarnos de que nuestra tarjeta de red es compatible con conexiones ad-hoc. Para ello desde el terminal con permisos de administración tecleamos:

     netsh wlan show drivers

Y nos fijaremos en el apartado “Red hospedada admitida”
En caso de que el valor sea afirmativo podremos seguir adelante con la configuración de la red ad-hoc. Para ello, al no disponer de una ventana específica para esta función desde la misma ventana de MS-DOS con permisos de administración teclearemos:

     netsh wlan set hostednetwork mode=allow ssid=[Nombre de la red] key=[Contraseña]

Por ejemplo:

     netsh wlan set hostednetwork mode=allow ssid=RedesZone.ad-hoc key=1234567890
Una vez tenemos todo configurado lo único que nos queda por hacer es activar nuestra red ad-hoc con Internet compartido. Para ello debemos teclear:

     netsh wlan start hostednetwork

Y nuestra red ya estará disponible para conectarse a ella con la clave que hayamos introducido en la configuración.
Para desactivar esta red compartida simplemente teclearemos: 
     netsh wlan stop hostednetwork

2015/07/15

Windows 8 - Cómo eliminar las carpetas especiales del explorador

En Windows 8 Microsoft ha hecho algo que -al menos a mi me- molesta mucho: desactivar las útiles bibliotecas de documentos y sustituir las bibliotecas que había por defecto, por unas carpetas especiales del sistema.

La mayor parte de los usuarios no se darán cuenta de este cambio, pero sí que hay una cuestión que es consecuencia directa y que es lo que más me molesta de todo: esas carpetas ahora aparecen colgando de "Mi PC" mostrándose en el explorador, tanto en la vista por defecto:as formación
...como en el árbol de navegación lateral:
También aparecen en los diálogos de selección de carpetas, en el árbol correspondiente.

Llámame "especialito", pero que me molesta mucho tener por el medio esas carpetas inútiles. Prefiero las bibliotecas en las que incluías tú las carpetas que te interesaban, y además no aparecían molestando por el medio como pasa aquí.

Entonces ¿cómo podemos librarnos de ellas pero no perder la funcionalidad en caso de que las uses?

La solución, como otras tantas veces, pasa por tocar el registro del sistema.

Abre el registro pulsando Tecla de Windows + R y escribiendo "regedit.exe". Necesitarás permisos de administrador de la máquina local.

En el editor del registro navega hasta la rama:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\explorer\MyComputer\NameSpace

Dentro de ésta verás que hay varias "carpetas" de claves como las que se ven en la figura:
Cada una de ellas representa una de estas carpetas especiales, a saber:

    {1CF1260C-4DD0-4ebb-811F-33C572699FDE}: Carpeta Música
    {374DE290-123F-4565-9164-39C4925E467B}: Carpeta Descargas
    {3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}: Carpeta Imágenes
    {A0953C92-50DC-43bf-BE83-3742FED03C9C}: Carpeta Vídeos
    {A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}:  Carpeta Documentos
    {B4BFCC3A-DB2C-424C-B029-7FE99A87C641}: Carpeta Escritorio

Si eliminas estas carpetas (todas o solo algunas) te desaparecerán del explorador, tanto de la portada como del árbol del lateral, y no te molestarán por el medio.

Si quieres, antes de hacerlo, arrastra las que sí uses a los favoritos del explorador, justo encima, o crea accesos directos en otro lugar y así aunque se eliminen del árbol y de la portada, podrás acceder igualmente a ellas, pero sin que te molesten por el medio.

Por cierto, si quieres eliminarlas también del diálogo de selección de carpetas y archivos, puedes borrar las claves de idéntico nombre de la rama del registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\
    CurrentVersion\Explorer\MyComputer\NameSpace

Con lo que te librarás de ellos definitivamente.

¡Espero que te resulte útil!

2015/07/11

TeamViewer 10 - Controla un ordenador de forma remota


Poder conectarnos de forma remota a un sistema informático a través de Internet es muy útil ya que nos permite disponer de todas sus funcionalidades sin la necesidad de estar sentado delante de él. Sin embargo, si queremos realizar determinadas funciones es necesario disponer del software de control remoto adecuado que nos permita trabajar sin problemas y cumpla con nuestras necesidades.

Existen muchas aplicaciones de control remoto de sistemas informáticos (Remote Desktop, VNC, Escritorio Remoto de Google, Hangouts, etc), sin embargo, una de las herramientas más utilizadas tanto en entornos corporativos como por usuarios individuales es TeamViewer. Hace pocos días los desarrolladores de la conocida herramienta TeamViewer lanzó la espera versión 10 de su cliente de control remoto de sistemas informáticos. Esta nueva versión llega a todos los usuarios con las siguientes novedades:

- Nuevo diseño.
- Mejoras en el rendimiento general del cliente y del servidor.
- Políticas de ajustes centrales.
- Historial del chat permanente y grupos de conversación.
- Lista blanca de clientes.
- Videollamadas integradas.
- Perfil de usuario e identidad corporativa.
- Soporte para conexiones UltraHD.
- Posibilidad de crear notas de las sesiones.
- Cierre de sesiones inactivas.
- Integración en la nube.
- Bloqueo de las reuniones para evitar que nadie se una sin permiso.
- Pizarra para el control remoto.

Para conectarnos de forma remota a nuestro ordenador a través de TeamViewer lo primero que debemos hacer es descargarlo desde su página web principal. Team Viewer es gratuito para uso personal, aunque aplica algunas limitaciones de funciones, generalmente no necesitadas por los usuarios no profesionales.

Una vez descargado el programa lo ejecutamos. En primer lugar veremos un sencillo asistente de instalación que nos preguntará si queremos instalar el servicio cliente-servidor en nuestro PC o simplemente ejecutarlo. Igualmente debemos indicar si somos usuarios personales o empresariales.
En este ejemplo no vamos a instalar nada, por lo que seleccionamos las opciones “Iniciar” y “Privadamente”. A continuación se abrirá la ventana del nuevo TeamViewer 10.
En esta ventana veremos dos apartados. En la parte izquierda un número ID de identificación (similar a un usuario) y una clave de acceso. Estos datos son necesarios si queremos que sea otra persona la que se conecta a nuestro ordenador o si este es un ordenador que queremos controlar nosotros de forma remota.

En la parte derecha disponemos de un cuadro donde debemos meter el ID del ordenador que queremos controlar. Este ID nos lo debe facilitar la persona dueña del ordenador o debemos llevarlo apuntado desde nuestro ordenador remoto que queremos controlar.

Una vez introduzcamos el ID en el cliente automáticamente conectará con los servidores de TeamViewer, obtendrá la IP del servidor remoto y establecerá conexión con él (todo esto en segundo plano). Nos pedirá también la contraseña de acceso, que debemos introducir cuando el servidor la solicite.

Con estos pasos se abrirá en nuestro ordenador una nueva ventana donde podremos ver el escritorio del ordenador remoto que estamos controlando.

El usuario dueño del ordenador servidor que estamos controlando verá en todo momento lo que estamos haciendo y podrá finalizarnos la conexión siempre que él quiera. Igualmente podrá comunicarse con nosotros en tiempo real ya sea a través de la pizarra como del cliente de chat o la videollamada, funciones integradas por defecto en TeamViewer 10.

2015/07/09

SQL - Conocer las ultimas consultas ejecutadas

El siguiente script permite saber que consultas se acaban de ejecutar en la base de datos.
SELECT deqs.last_execution_time  AS [Time],
       dest.TEXT                 AS [Query]
FROM   sys.dm_exec_query_stats   AS deqs
       CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY
       deqs.last_execution_time DESC
La gracia de la consulta es justamente  esa, listar las ultimas consultas SQL que se han ejecutado.

SQL - Vaciar los registros de distintas tablas en una base de datos

Vamos a recorrer todas las tablas de nuestra base de datos y eliminar sus registros. Para ello, utilizaremos la información que nos brinda information_schema.tables. Es muy importante que limitemos de alguna forma las tablas que se van a vaciar, por ejemplo, si las tablas de nuestra aplicación empiezan por "TBL_" podríamos especificar una condición WHERE que filtre por aquellas tablas que empiezan con ese nombre.
USE DB_PRUEBA
 
DECLARE @SQL_DELETE     VARCHAR(255),
        @NOM_TABLA      VARCHAR(255)

DECLARE CURSOR_DELETE CURSOR  
FOR
    SELECT 'DELETE FROM ' + TABLE_SCHEMA + '.' + TABLE_NAME,
           TABLE_SCHEMA + '.' + TABLE_NAME
    FROM   information_schema.tables
    WHERE  TABLE_NAME NOT LIKE 'sysdiagrams'
    ORDER BY
           TABLE_NAME

OPEN CURSOR_DELETE FETCH NEXT FROM CURSOR_DELETE INTO @SQL_DELETE, @NOM_TABLA
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC (@SQL_DELETE)
    FETCH NEXT FROM CURSOR_DELETE INTO @SQL_DELETE, @NOM_TABLA
END
CLOSE CURSOR_DELETE
DEALLOCATE CURSOR_DELETE

2015/07/07

8 razones de porqué los niños no deberían usar dispositivos portátiles

¿Su hijo a menudo juega con laptops, tablets o su teléfono inteligente? Tal vez quieras repensar eso. Una investigación mostró que exponer a los niños pequeños a estas tecnologías realmente perjudica los factores críticos para el desarrollo, comportamiento y aprendizaje. ¿Por qué tenemos que estar preocupados?

Las Tabletas impactan en el crecimiento cerebral
Entre el nacimiento y la edad, el cerebro se triplica en tamaño y continúa desarrollando rápidamente hasta la edad de 21 años. Esto requiere una amplia variedad de estimulación que no implique la exposición a las tecnologías antes mencionadas. En algunos casos, estas tecnologías causan retrasos cognitivos, aprendizaje deteriorado e impulsividad creciente.

Retraso en el desarrollo social
Niños pequeños que usan cosas como iPads a menudo han retrasado el desarrollo de habilidades sociales como logro académico y hablando.

Obesidad
Ésta debería ser una obviedad. 1 de cada 4 niños canadienses y 1 de cada 3 niños estadounidenses tienen sobrepeso u obesidad. Estos dispositivos suelen hacen que nuestros hijos vivan vidas más sedentarias. Eso equivale a un aumento de peso.

Privación de sueño
También no es de extrañar. No es raro que los niños se queden despiertos hasta muy tarde jugando juegos de computadora.

Demencia digital
El contenido multimedia de alta velocidad contribuye a los déficits de atención y concentración disminuida. Esto es causado por “poda cerebral” de circuitos neuronales en la corteza frontal.

Riesgo creciente de adicción
Estas tecnologías separan a menudo los padres de los niños. Se ha demostrado que cuando el apego parental está ausente, las posibilidades de adicción crecen, particularmente a las tecnologías que son adictos ya.

Exposición a la radiación.
La OMS clasifica los teléfonos celulares como un posible carcinógeno debido a la radiación que emiten. En 2013, el Dr. Anthony Miller de School of Public Health de la Universidad de Toronto recomienda que basada en la investigación, la exposición de radiofrecuencia debe ser reclasificada como probablemente carcinógeno.

Tensión ocular
Pasar demasiado tiempo frente a las pantallas puede causar tensión en los ojos, pero a los niños especialmente. Los niños pueden desarrollar síndrome visual informático, que es un tipo de cansancio ocular. Si tus hijos usan estas tecnologías, es mejor restringirlos a 30 minutos a una hora.

2015/06/01

SQL Server - Utilizando Arrays de parametros en Procedimientos Almacenados

Una característica muy solicitada por los desarrolladores en SQL Server es la de poder pasar varios valores a un procedimiento almacenado en forma de array. Desde hace mucho tiempo utilizo una función de SQL que me permitía trabajar con Arrays a través de una cadena de texto delimitada por comas, normalmente los utilizaba en procesos de selección como en el ejemplo siguiente:
CREATE PROCEDURE SP_GetPerson
 @param VARCHAR(MAX)
AS
 SELECT p.BusinessEntityID,
        p.FirstName,
        p.LastName
 FROM   Person.Person p
 WHERE  p.BusinessEntityID IN (SELECT *
                               FROM   [dbo].[ArrayToTable] (@param))
 ORDER BY
        p.BusinessEntityID ASC
En este procedimiento el parametro @param recibe una cadena delimitada por comas con los valores '1,2,3,4,5', el SP_GetPerson devuelve todas las personas con estos códigos, la definición del parametro '@param' se realiza con varchar(MAX), para que la cadena pueda almacenar la mayor cantidad de códigos posible, sin embargo varchar(MAX) tiene la limitación de 8000 caracteres y en algunas situaciones se nos puede quedar pequeño.
La definición de la función en Transact-Sql es la siguiente:
CREATE FUNCTION [dbo].[ArrayToTable]
(
 @delimStr NVARCHAR(MAX)
)
RETURNS @StrValTable TABLE 
        (StrVal VARCHAR(20))
AS
BEGIN
 DECLARE @strlist     NVARCHAR(MAX),
         @pos         INT,
         @delim       CHAR,
         @lstr        NVARCHAR(MAX)
 
 SET @strlist = ISNULL(@delimStr, '')
 SET @delim = ','
 
 WHILE ((LEN(@strlist) > 0) AND (@strlist <> ''))
 BEGIN
     SET @pos = CHARINDEX(@delim, @strlist)
     
     IF @pos > 0
     BEGIN
         SET @lstr = SUBSTRING(@strlist, 1, @pos -1)
         SET @strlist = LTRIM(SUBSTRING(@strlist, CHARINDEX(@delim, @strlist) + 1, 8000))
     END
     ELSE
     BEGIN
         SET @lstr = @strlist
         SET @strlist = ''
     END
     
     INSERT @StrValTable
     VALUES
       (
         @lstr
       )
 END
 RETURN
END
GO
Básicamente lo que hace es crear una tabla temporal conformada por un campo y cada valor en un único registro, de esta forma la consulta de arriba puede ser ejecutada sin problemas, hay que tener en cuenta que el uso de tablas temporales puede reducir el rendimiento, sin embargo es mejor esto a llamar al SP muchas veces. Podriamos tambien optar por pasar los arrays con XML y readaptar la función.

2015/05/16

SQL Server - Convertir o separar por comas una cadena dividido en filas

La siguiente función convierte y separa comas una cadena dividido en filas.
DECLARE @nombre_db AS VARCHAR(50) 
CREATE FUNCTION fn_SplitString
(
 @Str           NVARCHAR(MAX),
 @Separator     CHAR(1)
)
RETURNS @ResultOutput TABLE(Id INT IDENTITY(1, 1), Result NVARCHAR(100))
AS
BEGIN
 DECLARE @Splitted_string NVARCHAR(4000)
 DECLARE @Pos INT
 DECLARE @NextPos INT
 
 SET @Str = @Str + @Separator
 SET @Pos = CHARINDEX(@Separator, @Str)
 WHILE (@pos <> 0)
 BEGIN
     SET @Splitted_string = SUBSTRING(@Str, 1, @Pos - 1)
     SET @Str = SUBSTRING(@Str, @pos + 1, LEN(@Str))
     SET @pos = CHARINDEX(@Separator, @Str)
     INSERT INTO @ResultOutput
     VALUES
       (
         @Splitted_string
       )
 END
 RETURN
END
Utilizando la función fn_SplitString en consulta:
--Separar una cadena por comas
SELECT Result
FROM   fn_SplitString('Split,string,example,in,sql,server', ',')

--Separar una cadena por símbolo de canalización
SELECT Result
FROM   fn_SplitString('Split|string|example|in|sql|server', '|')

--Separar una cadena por el espacio
SELECT Result
FROM   fn_SplitString('Split string example in sql server', ' ')

2015/05/02

SQL Server - Backup a todas las bases de datos

Aqui les dejo el código para hacer backup de todas sus bases de datos, solo tienen que ponerlo en un trabajo(jobs) para que se ejecute periódicamente.
DECLARE @nombre_db AS VARCHAR(50) 
DECLARE tablas_cursor CURSOR  
FOR
    SELECT NAME
    FROM   sys.databases
    WHERE  NAME NOT IN ('master' ,'tempdb' ,'model' ,'msdb')

OPEN tablas_cursor 

FETCH NEXT FROM tablas_cursor INTO @nombre_db 

WHILE @@fetch_status=0
BEGIN
    DECLARE @nombre VARCHAR(150) 
    
    SET @nombre = CONVERT(VARCHAR(9) ,GETDATE() ,6) 
    SET @nombre = 'D:\Backup\'+@nombre+'-' 
       +@nombre_db+'.bak'
    
    SET @nombre = REPLACE(@nombre ,' ' ,'') 
    
    
    BACKUP DATABASE @nombre_db TO DISK=@nombre WITH COMPRESSION
    
    FETCH NEXT FROM tablas_cursor INTO @nombre_db
END 

CLOSE tablas_cursor 

DEALLOCATE tablas_cursor

2015/02/09

¿Cómo de hackeable eres? Calcula tu puntuación 'Pwned'

Curioso artículo en el Huffington Post en el que se presenta un pequeño cuestionario con el que los usuarios pueden evaluar el riesgo de ser hackeados. Lo hemos adaptado un poquito pero más o menos puedes obtener una puntuación (no excesivamente científica) para ver las posibilidades de ser jodido pwned :


1.- ¿Qué tan fuertes son sus contraseñas? (10 puntos): A menudo las personas cometen errores básicos con sus contraseñas, como elegir aquellas que son fácilmente adivinables/crackeables (por ej: 'password123'), mantener las contraseñas por defecto, la reutilización de la misma contraseña en varias cuentas, etc. Puntuate a ti mismo:
+2 si escribes contraseñas complejas (caracteres, combinación de letras, números y símbolos)
+4 si utilizas contraseñas únicas para cada cuenta
+4 si usas autenticación de dos factores (cuando esté disponible)

2.- ¿Haces copia de seguridad de tus datos? (10 puntos): Los ciberdelincuentes usan cada vez más "ransomware" para victimizar a los consumidores. Dado que estos ataques hacen que los archivos personales (documentos, fotos, vídeos, música, etc.) sean inaccesibles y los PCs inservibles, la mejor manera de protegerse contra ello es mediante copias de seguridad periódicas de los datos a un disco duro externo, unidad flash o una cuenta en la nube. Elige una de estas puntuaciones:
+10 si haces copias de seguridad de los datos al menos una vez a la semana
+5 si haces copias de seguridad de los datos al menos una vez al mes
+1 si haces copias de seguridad con otra periodicidad mayor
+0 si no haces copias de seguridad

3.- ¿Qué sistema operativo utilizas? (5 puntos): Debido a que la mayoría de las personas en todo el mundo utilizan PCs basados en Windows en lugar de OS X o sistemas basados en Linux, los ciber-delincuentes suelen escribir malware diseñado específicamente para este sistema operativo. Como resultado, los usuarios que usan Macs o dispositivos Linux estarán generalmente menos expuestos (aunque no significa que sean inmunes) al malware que los usuarios de Windows. Puntuate a ti mismo:
+5 Si utilizas un dispositivo con Linux
+3 Si utilizas un dispositivo con OS X
+0 Si utilizas un dispositivo con Windows

4.- ¿Utilizas antivirus? (5 puntos):  Es cierto, un antivirus no es una bala de plata - y va a "tragarse" una gran cantidad de malware peligroso. Pero los usuarios todavía tenemos que tenerlo y mantenerlo actualizado, porque sin AV todavía existe un mayor riesgo de infección. Puntuate a ti mismo:
+5 si utilizas un producto antivirus en todos sus dispositivos (ya sea Windows, Mac o Linux) con firewall personal
+3 si utilizas un producto antivirus en todos sus dispositivos (ya sea Windows, Mac o Linux) sin firewall personal
+0 si no utilizas antivirus

5.- ¿Cómo navegas por Internet? (10 puntos): la mayoría de los ataques vienen ahora a través del navegador de Internet (descargas drive-by, cross-site scripting, man-in-the-browser, etc.), así que es importante que los usuarios naveguen por la web con cuidado. Eso significa:
+3 si usas plugins que bloqueen scripts (ScriptSafe, NoScript, Adblock Plus, etc.)
+2 si nunca haces clic en los anuncios pop-up o alertas
+2 si nunca visitas una página de registro de un enlace enviado por correo electrónico
+3 si usas navegadores separados para ir de compras y navegar por la web

6.- ¿Utilizas un PC dedicado para acceder al banco? (10 puntos) - En algún momento, casi todos los ordenadores que navegan por la web se infectan con malware y, en el peor de los casos, se trata de un troyano bancario. Si los usuarios deben proteger una cosa, esa es su cuenta bancaria online. La mejor manera de hacer esto es tener un equipo dedicado (como un netbook barato o Chromebook) que sólo se utilice para acceder online al banco. Puntuate a ti mismo:
+10 si tienes un portátil dedicado que sólo utilizas para la banca en línea
+0 si no

7.- ¿Utilizas redes Wi-Fi públicas? (10 puntos): Si usas WiFis públicas estás pidiendo a gritos ser hackeado. Hay una serie de herramientas de hacking gratuitas o de bajo coste que hacen que sea fácil para casi cualquier persona hackear una conexión Wi-Fi abierta. Puntuate a ti mismo:
+0 si utilizas WiFi públicas por lo menos una vez al año
+10 Si nunca las usas, 10.
-5 Si nunca usas WiFi públicas pero utilizas WiFi protegida por contraseña en tu casa y tus vecinos tienen cobertura

8.- ¿Visitas sitios peligrosos? (10 puntos): Esto no es un juicio personal, pero si frecuentas sitios web para adultos o sitios de intercambio de archivos donde los usuarios comparten películas y música pirateadas, estás aumentando el potencial de exponerte. Puntuate a ti mismo:
+0 si visitas estos sitios, 0
+10 si nunca lo haces

¿El resultado? 

A menos que obtuvieras 60 puntos o más, no estás seguro en absoluto y es el momento de cambiar tus costumbres. 
Y si puntuaste 35  o menos, ten cuidado porque eres un blanco muy fácil para los hackers y lo único que te mantiene a salvo es pura suerte. De hecho, es probable que ya puedas haber sido comprometido de una manera u otra, y que lo sepas o no.

Referencia: http://www.hackplayers.com/

2015/01/08

SQL SERVER - Encontrar tablas creadas o modificadas en la última semana

El siguiente Script SQL muestra una manera de identificar las tablas que se crearon o modificaron en la base de datos en la ultima semana.
 
SELECT o.name AS [Object_Name]
      ,s.name [Schema_Name]
      ,o.type_desc [Description]
      ,o.create_date [Creation_Date]
      ,o.modify_date [Modified_Date]
FROM   sys.all_objects o
       LEFT OUTER JOIN sys.schemas s
            ON  o.schema_id = s.schema_id
WHERE  create_date>(GETDATE()- 7)
       OR modify_date>(GETDATE()- 7)


Como puede ver, la consulta se puede agregar a un Job de SQL Server y podemos enviar el mismo como un correo electrónico al DBA o equipo de seguridad de forma automática.