October 2007 - Artículos

SQLPing 3.0: Detección de Inconsistencias

SQLPing 3.0 es una simple herramienta cuya funcionalidad es escanear la red en busca de instalaciones SQL Server para detectar inconsistencias en sus configuraciones, y usted mismo puedo corregirlos y asegurarlos. También agrega de la capacidad para forzar el password para una instancia o varias instancias de SQL Server. SQLPing v3.0 puedes descargarlo gratis. Esta herramienta requiere previa instalación del .NET Framework v2.0, ya que fue desarrollado usando WMI en .NET. Si deseas desarrollar tu propia herramienta puedes guiarte de este post donde se enseña cómo detectar las instancias SQL Server usando WMI. Prúebalo, y me cuentas como te va...

Publicado por Percy Reyes | con no comments

Charla: How-To - Cómo asegurar la información en SQL Server 2005

He tenido el gusto de recibir una invitación como expositor para el evento tecnológico organizado por la Comunidad Microsoft de SENCICO con motivo del aniversario de esta institución y que se llevará acabo el 23 del presente, en horas de la tarde, Local SENCICO Trujillo (Perú) -  Auditorio: Av. Carlos Monge 292 - Urb. Chimú.

El tema que tocaré será: Cómo asegurar la información en SQL Server 2005. En esta charla de 1:15 horas veremos cómo SQL Server 2005 incorpora mejoras significativas en el modelo de seguridad de la plataforma de bases de datos, con el objetivo de proporcionar más opciones a nivel de gestión y de seguridad tanto para los desarrolladores como a los administradores.

Además conoceremos varias características de seguridad configurables y de gran precisión, las cuales permiten a los administradores implementar una defensa optimizada para los riesgos de seguridad específicos de su entorno.

Espero verlos en el evento!.

Saludos cordiales!.

Publicado por Percy Reyes | 8 comment(s)

Hack: Usar "UNION" para minimizar el ancho de banda en "JOIN"s

Muchas veces al usarse JOINs traemos datos repetidos, y eso algunas veces es exagerado. Podemos usar UNION para minimizar el ancho de banda cuando se trabaje con uno o varios JOINs en una consulta. Para la demostración se usará las tablas Products y Categories de la histórica y muy conocida base de datos Northwind.

Bien, la siguiente consulta traerá las columnas (CategoryID, CategoryName, Description) de la tabla Categories y las columnas ProductID, ProductName y QuantityPerUnit de sus productos asociados. Para esto tenemos:

SELECT c.categoryid, c.categoryname, c.description,
p.productid, p.productname, p.quantityperunit
FROM products AS p
INNER JOIN categories c
ON p.categoryid = c.categoryid
WHERE c.categoryname = 'Seafood'
ORDER BY c.categoryid, p.productid 

Los resultados podemos verlo así:

Vemos en los resultados que se repiten demasiados datos... ¿Qué hacer para mejorar la consulta?, una alternativa es transformar la consulta anterior usando UNION, en algo mucho mejor y razonable, para obtener esto:

La consulta debe ser así:

SELECT 'Categoria' AS tipofila,
c.categoryid, c.categoryname, c.description
FROM categories c
WHERE c.categoryname = 'Seafood'
UNION ALL
SELECT 'Productos' AS tipofila,
p.productid, p.productname, p.quantityperunit
FROM categories c
INNER JOIN products p
ON p.categoryid = c.categoryid
WHERE c.categoryname = 'Seafood'
ORDER BY tipofila 

Aquí se está haciendo un uso óptimo del ancho de banda porque no hay datos repetidos para alguna columna de valores grandes, es más, la columnas "TipoFila" es opcional, pudiéndose optar por desecharlo, y entendiendo que la primera fila sería para los datos de la categoria.

Saludos Cordiales!,

Publicado por Percy Reyes | 9 comment(s)

Cómo buscar cadenas en varias columnas a la vez

Muchas veces necesitaremos buscar cadenas que podrian estar en muchas columnas. Esta tarea podriamos realizarlo individualmente, buscando la cadena en cada columna(una por una), o buscar a la vez en todas las columnas. Para ejemplificar un poco, vamos a crear la siguiente tabla:

CREATE TABLE dormitorios (
  [id] INT IDENTITY PRIMARY KEY,
[nombre] NVARCHAR(15),
[colorpiso] NVARCHAR(10),
[colortecho] NVARCHAR(10),
[colorpared] NVARCHAR(10))

Ahora, llenamos con data:

INSERT INTO dormitorios
SELECT 'Nhalim','YELLOW','BLUE','BLACK' UNION
SELECT 'Percy','BLACK','WHITE','BLUE' UNION
SELECT 'Saida','BLUE','GREEN','YELLOW' UNION
SELECT 'Yoshit','BLUE','PINK','BLACK'

Bien, ahora, ya teniendo todo listo, pasamos a buscar la cadena 'BLACK' en cada columna, una por una:

SELECT id,nombre
FROM dormitorios
WHERE [colorpiso] = 'BLACK'
OR [colortecho] = 'BLACK'
OR [colorpared] = 'BLACK'

Aquí algo más desastroso, pero que funciona:

SELECT id,nombre
FROM dormitorios
WHERE [colorpiso] LIKE '%BLACK%'
OR [colortecho] LIKE '%BLACK%'
OR [colorpared] LIKE '%BLACK%'

Finalmente te dejo una técnica de cómo buscar a la vez en todas las columnas en lugar de hacerlo individualmente.

SELECT id, nombre
FROM dormitorios
WHERE ':' + colorpiso + ':' + colortecho + ':' + colorpared + ':' LIKE '%:BLACK:%'

Lo que se ha hecho es concatenar y delimitar con dos puntos cada una de las columnas donde se desea buscar la cadena. Una manera bastante práctica e interesante de hacer el mismo trabajo. :).

Publicado por Percy Reyes | 10 comment(s)

Mejorar la performance de los filtros sobre columnas indexadas

Es bien sabido que el uso de filtros en nuestras consultas mejoran la performance de la misma. Podemos filtrar filas usando las cláusulas WHERE, HAVING; filtramos columnas asegurándonos de especificar solamente las columnas que realmente se necesita traer de la base de datos. Algo más, evite usar * con los SELECT!, evítelo!.

Aquí no termina todo, podemos seguir mejorando la performance de las consultas mediante el uso de índices sobre las columnas implicadas, no usarlo implica problemas de performance significantes a largo plazo. Los índices permiten traer la data mucho más rápido de la base de datos, y además el optimizador de consultas podría usarlo para realizar un filtro inicial en vez de usar la data de la tabla actual que se estuviera consultando. Bien, una manera de crear un índice es definiendo un primary key, el cual asegura que la clave sea única en la tabla. Un primary key puede estar montado sobre una sóla columna o varias columnas.

Al crear un primary key sobre varias columnas, automáticamente se crea un índice compuesto, bien, el orden de las columnas implicadas es muy importante!, y es esto lo que trataré de explicar. El sistema de base de datos utiliza los índices compuestos como (Campo1, Campo2,Campo3) en la medida en que puede encontrar lo que quiere para un índice leyendo los campos clave de izquierda a derecha. En base a lo dicho, si se tiene un índice Idx1(Campo1, Campo2, Campo3), y se necesitara un índice para Campo1, podría usarse este mismo índice, y estaría bien!. Pero si se desea un índice para Campo2, este índice sería inefectivo, afectando la performance de la consulta, porque Campo1 va antes que Campo2. Cuando usemos estas columnas, debemos asegurarnos usarlo en ese orden, es decir, de izquierda a derecha!, para evitar problemas, y aprovechar el índice. Por ejmplo, si tenemos un indice (Campo1, Campo2) en una consulta algo así como:

SELECT campo3
FROM table1
WHERE campo1 > 150
AND campo2 = 'Trujillo' 

Aquí se estaría aprovechando y usando correctamente el índice. Pero que pasa si tengo esto:

SELECT campo3
FROM table1
WHERE campo2 = 'Trujillo'
AND campo1 > 150 

Desde luego, es la misma consulta, pero hay un detalle. El Detalle es que no estaría usándose el índice correctamente, o en todo caso, el optimizador de consulta podría decidir simplemente no usarlo, mientras que nosotros creemos que tenemos un índice a nuestro favor. En este caso, recomiendo crear índices separados para cada columna.

CREATE INDEX idx2 ON table1(campo1);
CREATE INDEX idx3 ON table1(campo2); 

En fin, no olvide de tener mucho cuidado al momento de definir el orden de la columnas cuando va crear un índice compuesto, como también el orden en el que los usa. Espero les sirva!.

Saludos Cordiales!,

Publicado por Percy Reyes | 1 comment(s)

WebCast: Techniques for Performance Tunning SQL Server Databases

Otro excelente webcast: Techniques for Performance Tunning SQL Server Databases, que será presentado por Gustavo Larriera, este 23 de octubre, hora: 2:00 pm. No se pierdan esta gran oportunidad de seguir capacitándose en SQL Server.

Información General del Evento: 

Si bien SQL Server por defecto se ajusta automáticamente para alcanzar un buen rendimiento, en muchos casos surge la necesidad de ajustar o configurar adecuadamente a los servicios y a las bases de datos. En esta sesión revisaremos las causas principales de problemas de rendimiento; visitaremos a las principales herramientas disponibles para medir y ajustar el rendimiento de SQL Server; explicaremos las técnicas y recomendaciones más usadas en cuestiones de rendimiento; y en forma general se mostrará una guía práctica para auditar problemas de rendimiento. Para esta sesión se recomienda conocimientos previos de administración de SQL Server 2000 o 2005 y cierta comodidad en el uso del lenguaje T-SQL.

Puedes regístrarte aquí.

Saludos cordiales,

Percy Reyes,

Publicado por Percy Reyes | 1 comment(s)

Ventajas de tener una novia Geek!, y no morir en el intento!


Hace tiempo atrás publiqué las 10 razones para salir con un geek, era algo más como dándoles razones a ellas por las que deberian salir con nosotros, pero ahora vamos invertir las cosas, y vamos a ver las ventajas de tener una novia Geek, y no morir en el intento!, ya que ella podría ser más geek que tú, y buscarse a alguien tan geek como ella xD!... creo esta situación ya está rayándose y preucupándome...

Tus rivales no estarán a tu altura
No tendrás que defender a tu chica del acoso de los buitres en playa o discoteca. No están a tu nivel y a tu chica no le interesarán lo más mínimo. No tendrás que mantener tus abdominales como una tabla de fregar para impresionarla y que te prefiera al resto del ganado. No es eso lo que a ella le interesa. Sin embargo ésto no significa que ella no pueda sentirse tentada por otros chicos, pero tú tendrás las armas necesarias para defenderte de ellos.

La chica geek viene con complementos
Es decir, ella tiene su propia colección geek de cosas. Ya sean gadgets, una colección completa de libros de ciencia ficción (ediciones en inglés, claro está), computadora propia (con Linux pre-instalado) o su propio juego de mapas y dados. Será doblemente divertido, ya que podrás comparar lo que uno no tiene pero el otro sí ha conseguido, y además no temerás por la integridad de tus cosas. Ella es una chica bien equipada.

La chica geek te deja tu espacio
Ella no te va a pedir que la lleves al restaurante más caro cada fin de semana para que le demuestres cuánto te importa. Invítala a una pizza en tu casa y después a una partida al juego online de moda y ya la tienes contenta para el resto de la velada. Además, no tienes que gastarte demasiado dinero en SMS, seguro que ella usa Skype o la última versión del equivalente libre, que además seguramente, es gratis. Seguramente no tendrás que enseñarle cómo se configura la webcam en Linux porque ella se habrá encargado solita de recompilar los drivers en Ubuntu.

Puedes ser tú mismo en tus conversaciones con ella
No tendrás que estar al día de los temas top de las conversaciones sin sustancia que interesan al resto de las chicas. A ella le interesará que le cuentes la historia de aquel troll que tuviste que banear ayer en tu blog o cómo te cargaste al monstruo aquél en el World of Warcraft tú solo (aunque es probable que ella jugara esa partida contigo).

Puedes compartir con ella tus actividades y aficiones favoritas
Puedes disfrazarte con ella para ir al último estreno geek del cine, o abrir un blog conjunto, o dirigir partidas de rol entre los dos… Todo lo que era tan divertido hacerlo sólo, ahora puedes compartirlo con tu chica. ¡Dime ahora que no es un tesoro!

Puede que ella tenga un par de cosas que enseñarte
Esto puede sentarle mal a tu ego, pero como la quieres, te encantará. Es posible que sin su ayuda no seas capaz de salir de ese horrible cuello de botella en aquella aventura gráfica que tanto te gustaba, o puede ser que ella tenga algún libro que dejarte que aún no conozcas o que estabas deseando encontrar.

La chica geek habla tu idioma
Y además literalmente. Conozco casos de chicas que estudiaron Quenya, incluso puede que alguna haya que sepa Klingon o alguna lengua similar. Además, si es tu caso, seguramente tu chica sea de las pocas personas con las que puedas pasar una tarde completa viendo episodios de Padre de Familia en inglés sin subtítulos y arqueándose de la risa. ¡Qué bonito es el amor! Y en versión original… más!.

La chica friki te quiere de verdad
Ella es casi única (aunque por suerte el número de chicas geek aumenta cada día, aún la proporción de ellas es muy baja), mientras que geeks hay muchos. Si en una Campus Party hay 5000 personas y de ellas sólo hay 100-200 chicas y, en esa proporción, una de ellas te ha elegido a tí, querido amigo, eres un tipo con suerte, a esa chica le gustas de verdad. Agárrala y no la sueltes.

Sí!, Con ella podrás tener la boda geek de tus sueños! Si eres de los que quiere casarse vestido de elfo o de caballero Jedi, con ella podrás cumplir tu sueño. Y no sólo éste, sino muchos más. A ella no le extrañará que le digas que te pone que se vista como Leia en la escena con Jabba el Hut, y puede que te sorprenda sacando de su armario el sexy bikini dorado y se haga trenzas en el pelo. Sí, tus sueños onanistas pueden hacerse realidad teniendo una novia geek.
Fuente: Ventajas de tener una novia Geek

Saludos, y espero que les haya gustado!,

Publicado por Percy Reyes | 10 comment(s)

Un anio posteando en Geeks.ms !!! [H]

Hoy día estoy de aniversario, así es, cumplo un año desde que empecé a postear en esta prestigiosa comunidad. Mis inicios como Blogger empezó hace varios años. Tuve mi primer blog en blogger.com, luego experimenté con varios servicios como wordpress.com, blogsome.com, perublog.com, etc, pero ninguno me convenció, razones?, muchas! (no detallaré más, porque no viene al caso). 

Siempre me ha gustado escribir acerca de tecnologías como Microsoft .Net, SQL Server, y no sólo eso, también de mi vida diaria. Es por eso, recuerdo bien, tiempo atrás, tenía un blog donde escribía acerca de mi vida diaria, lo que me pasaba en la universidad, lo que sentía y pensaba del mundo, así como de la vida de un programador. La gente que me haya leído antes, el blog se llamaba: El Diario de un Programador.

Siguiendo en mis aventuras de encontrar un servicio gratuito cada vez mejor, mi amigo Guino me dio un lugar en 3devnet.com, donde tengo este blog, y por cierto ya no he actualizado hace 2 meses (Gracias Guino)... :(. En estoy días lo haré.

En este trance, llegué a conocer Geeks.ms, me gustó mucho por la calidad de bloggers, todos ellos muy profesionales en el área, hablando sobre temas interesantes.... En fin, estoy de aniversario, y a partir de hoy mi participación en Geeks.ms será mucho más, sobre todo, voy darle más picada a SQL Server, escribiré más sobre el tema, de la versión 2005, como de la versión 2008.

Finalmente, quiero agradecer a Rodrigo Corral, por darme un lugar en esta comunidad. Rodrigo, Muchas gracias!. También agradecer a todos los lectores de este blog, sin ustedes las estadísticas recientes no registrarían un promedio de 500 visitas diarias, nuevamente: Gracias Totales!!!. Espero que hasta ahora les haya sido de utilidad todos los posts que he venido escribiendo. Estoy de aniversario y dentro de un rato iré a comprar unas cervezas para celebrarlo!, Quién me acompaña?... :O.

Saludos cordiales!,

Percy Reyes,

Publicado por Percy Reyes | con no comments