jueves, 25 de octubre de 2012

Instalando Saint Enterprise Administrativo desde cero

He instalado la consola de administración de Kaspersky en el Servidor donde corre Saint, -sí, ya sé que ésta entrada trata de la instalación de Saint desde cero, pero eso fue lo que conllevo a instalar Saint- pero se me presentaron algunos inconvenientes y toco des instalarla por recomendación de soporte técnico de Kaspersky, acto seguido: Bummp!!! Las estaciones de trabajo de Saint perdieron conexión contra el Servidor.

Me comunico con soporte Saint para solicitar su ayuda y les comento el caso, solución propuesta a vuelo de pájaro: "Una vez se nos presento ese inconveniente con ese antivirus, y no sabes cual es la razón, así que te recomiendo formatees el Servidor y reinstales todo nuevamente"; por supuesto que me impresiono todo, y aún atónito con la solución planteada me enfrento al problema pero sin resultado positivos en dos días, ya con el personal administrativo acumulando trabajo decido formatear, "de seguro eso resolverá el problema".

Pensando que las sorpresas habían terminado, aún me guardaban dos; reinstalo todo nuevamente, levanto el Servidor y cuando voy a las estaciones de trabajo éstas siguen sin conexión contra el Servidor (primera sorpresa), vuelvo a consultar con soporte de Saint y me dan la otra sorpresa: "tenemos que instalar nuevamente el SQL porque posiblemente no este bien instalado", casi entregado le solicito una cotización por resolver el problema, cuando lo vi recordé a Condorito -de seguro lo recuerdas-.

Tome un poco de aire y me senté nuevamente a buscar una solución en el Servidor, y como el que persevera vence, di en el clavo, un servicio que estaba detenido no me permitía las conexiones clientes contra SQL Server; ahora después de esta larga introductoria pasemos a lo que vinimos.

Para instalar Saint es necesario tener un Servidor SQL, puede ser MS SQL Server ó MS SQL Server Express, para ésta instalación use la versión Express.

Para instalar SQL Express descargas el paquete de instalación desde http://www.microsoft.com/es-es/download/details.aspx?id=15291, lo ejecutas y suministras los datos solicitados. Para que te evites dolores de cabeza como el me ocurrió te recomiendo la siguiente guía; que fue la que me dio luces para resolver mi problema, SQL Server Express - Instalación y Configuración

Luego instalas Saint como lo explican en el siguiente vídeo:


Una vez instalado el programa lo primero que se debe ejecutar es el módulo Configurador, para que se creen las tablas en la base de datos, una vez creadas las tablas se ejecuta el módulo Conexion para conectar contra el Servidor suministrando los datos de conexión a la Base de Datos: -Servidor SQL; -Base de Datos; -Usuario de la Base de Datos, por defecto es sa; -Clave del Usuario.

Listo, ya debes tener Saint instalado correctamente, solo resta instalar en las demás estaciones de trabajo si es necesario, solo que en las próximas instalaciones no es necesario ejecutar el Configurador de primero porque las tablas ya fueron creadas, solo conectamos contra el Servidor.

Si buscas información para la Instalación de Saint de seguro no encontraras mucha, así que espero te sea útil estas memorias.

lunes, 22 de octubre de 2012

Tras registros duplicados en una Base de Datos MySQL

Algunas veces nos encontramos con el siguiente caso:
"En el Diseño de la Base de Datos me he saltado un restricción para evitar la inserción de elementos duplicados en una tabla".
O simplemente las inserciones las estamos haciendo de manera automática, levantando la información desde algún archivo o dispositivo y, por "circunstancias", se cae en un bucle de inserción de los mismos datos (vaya que si me ha pasado), entonces nos toca eliminar esos registros duplicados.


Para comprender bien la operativa a realizar vamos a hacer un ejemplo muy sencillo, creamos una tabla del abecedario donde no deben existir letras repetidas y cada letra tendrá su PK numérica.
CREATE TABLE abecedario(
    id in] NOT NULL Primary Key,
    letra char(1) NOT NULL);
Insertamos 10 filas de ejemplo
id          letra
----------- -----
1           A
2           B
3           C
4           D
5           A
6           E
7           D
8           F
9           F
10          Z
(10 filas afectadas)
Para conocer cuales son las letras que estan repetidas podemos ejecutar este query, que selecciona las letras y las cuenta, agrupa las letras permitiendo que muestre una sola vez la letra repetida y el al lado muestre la cantidad de repeticiones
select letra, COUNT(*) from abecedario
group by letra
having COUNT(*) > 1;
Pero esto no basta, solo nos muestra los valores repetidos. Si quisiéramos eliminar todos funcionaria en un DELETE, pero el objetivo es eliminar todos los valores duplicados pero dejar uno. Para ello obligatoriamente necesitamos que exista una columna que tenga un identificador único (por ejemplo una PK u otra llave única).
Primero visualizamos cuales serán las filas borradas:
select a1.id ,a1.letra from abecedario as a1
inner join abecedario as a2
on a1.letra = a2.letra
and a1.id > a2.id;
Lo que hizo la consulta fue crear dos conjuntos de datos de la misma tabla, y unirlas en las columnas que deberían ser únicas y filtrarlas por que no son iguales al primer valor repetido. Para eliminar las filas ejecutaríamos lo siguiente:
delete from abecedario
where id in (
select a3.id from (
     select a1.id from abecedario as a1
     inner join abecedario as a2
     on a1.letra = a2.letra
     and a1.id > a2.id
) as a3
);
Quedando así la tabla:
id          letra
----------- -----
1           A
2           B
3           C
4           D
6           E
8           F
10          Z
(7 filas afectadas)