<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21559780</id><updated>2011-04-21T14:56:28.447-06:00</updated><title type='text'>Oasis</title><subtitle type='html'>Este blog contendra informacion referente a Ing. de Software, Bases de datos, y demas conceptos que se nos vayan atravesando.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21559780.post-115255344981943622</id><published>2006-07-10T11:38:00.000-06:00</published><updated>2006-07-17T12:14:23.186-06:00</updated><title type='text'>sp_OAGetErrorInfo</title><content type='html'>&lt;span style="color:#663300;"&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#663300;"&gt;Hoy me tope con un problema que me parece que merece la pena ser publicado, el caso es que existen varios &lt;span style="color:#000099;"&gt;Store Procedures&lt;/span&gt; en una de las aplicaciones a las que les doy soporte, &lt;span style="color:#000099;"&gt;los cuales lanzan DTS.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#663300;"&gt;&lt;br /&gt;Cuando empiezo a revisar el problema, lo primero que me imagine fue que el SP no corrió, pero no fue así, el SP si se ejecuto, entonces me fui a la parte donde se ejecuta el dichoso DTS ya que es la parte medular del proceso, debido a que sin DTS no hay datos y sin datos no se reflejan resultados y precisamente eso fue lo que reporto el usuario.&lt;br /&gt;&lt;br /&gt;Bueno, al principio no tenia idea de que pasaba, ejecutaba el código para lanzar el DTS y &lt;span style="color:#000099;"&gt;solo recibía mensajes que yo los había puesto.&lt;/span&gt; Voy a poner el código para verlo mejor.&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT -- Create Package&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'LoadFromSQLServer("SERVER", "USER", "PWD", 0, , , , "DTSNAME")', NULL&lt;br /&gt;if ( @hr &lt;&gt; 0 )&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color:#000099;"&gt;print ' Error in Loading Package '&lt;br /&gt;&lt;/span&gt;end&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'Execute'&lt;br /&gt;if ( @hr &lt;&gt; 0 )&lt;br /&gt;begin&lt;br /&gt;&lt;span style="color:#000099;"&gt;print ' Error in Executing Package '&lt;/span&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'&lt;br /&gt;EXEC @hr = sp_OADestroy @oPKG&lt;br /&gt;&lt;br /&gt;Como vemos solo me salía &lt;span style="color:#000099;"&gt;Error in Loading Package y Error in Executing Package&lt;/span&gt;, con esto pues no podía llegar a ningún lado, así que puse un print para ver el valor de @hr. Eso no me ayudo en absolutamente nada, así que empecé a investigar los métodos &lt;span style="color:#000099;"&gt;sp_OACreate, sp_OAMethod&lt;/span&gt; y me encontré con uno que&lt;span style="color:#000099;"&gt; estaba omitiendo&lt;/span&gt; y que es de gran ayuda, este es &lt;/span&gt;&lt;span style="color:#000099;"&gt;sp_OAGetErrorInfo.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#663300;"&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Con este saque cual era el problema&lt;/span&gt;, substituyes esos mensajes de error que puse por esos que te genera este comando y listo, &lt;span style="color:#000099;"&gt;ahora si tenemos un mensaje de error real.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Este seria un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT&lt;br /&gt;&lt;br /&gt;SELECT [Error Source] = @errorSource, [Description] = @errorDescription&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aquí dejo el código completo:&lt;br /&gt;&lt;br /&gt;DECLARE @hr int, @oPKG int&lt;br /&gt;DECLARE @errorSource NVARCHAR(1000), @errorDescription NVARCHAR(1000)&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT -- Create Package&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'LoadFromSQLServer("SERVER", "USER", "PWD", 0, , , , "DTS")', NULL&lt;br /&gt;if ( @hr &lt;&gt; 0 ) begin&lt;br /&gt;&lt;span style="font-size:85%;color:#000099;"&gt;EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;SELECT [Error Source] = @errorSource, [Description] = @errorDescription&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;end&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'Execute'&lt;br /&gt;if ( @hr &lt;&gt; 0 ) begin&lt;br /&gt;&lt;span color="#000099"&gt;&lt;/span&gt;&lt;span color="#000099" size="2"&gt;EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT&lt;br /&gt;SELECT [Error Source] = @errorSource, [Description] = @errorDescription&lt;/span&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'&lt;br /&gt;EXEC @hr = sp_OADestroy @oPKG&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-115255344981943622?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/115255344981943622/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=115255344981943622' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/115255344981943622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/115255344981943622'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/07/spoageterrorinfo.html' title='sp_OAGetErrorInfo'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-114106700655403858</id><published>2006-02-27T12:01:00.000-07:00</published><updated>2006-02-27T12:07:06.846-07:00</updated><title type='text'>SQL: Optimización de las consultas</title><content type='html'>&lt;span style="color:#996633;"&gt;Bueno, ya tenemos la forma en la cual podemos capturar o rastrear los eventos que se están ejecutando en el servidor, ahora es importante saber leer estos eventos y &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;saber cuales están provocando un stress o demora en el desempeño&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Normalmente lo que pasa &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;cuando el desempeño esta mal son 2 cosas&lt;/span&gt;&lt;/strong&gt;: &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#996633;"&gt;&lt;br /&gt;• Estas consultas &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;consumen muchos recursos del sistema&lt;/span&gt;&lt;/strong&gt; y hacen que no se realice un desempeño adecuado.&lt;br /&gt;• También pasa que las consultas problemáticas &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;bloquean a otras consultas haciéndolas lentas&lt;/span&gt;&lt;/strong&gt;, por lo tanto optimizar a las consultas problemáticas beneficia a todas las consultas y eventos.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Para identificar a estas consultas lentas o problemáticas podemos usar las columnas CPU o Reads.&lt;/span&gt;&lt;/strong&gt; Como ya sabemos Read es el numero de lecturas y CPU el numero de milisegundos que tarda una consulta.&lt;br /&gt;&lt;br /&gt;Aunque un evento solamente haga lecturas hace una especie de &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;bloqueo sobre los datos&lt;/span&gt;&lt;/strong&gt;, por lo tanto es importante optimizarlos.&lt;br /&gt;Hay 2 categorías de &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;consultas problemáticas&lt;/span&gt;&lt;/strong&gt;:&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;• Simples&lt;br /&gt;• Múltiples&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Las simples las identificamos porque tienen una cantidad grande en la columna “reads”&lt;/span&gt;&lt;/strong&gt;, es decir una sola consulta es muy robusta en sus lecturas.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Las múltiples las identificamos porque son pequeñas consultas que se ejecutan muchas veces&lt;/span&gt;&lt;/strong&gt;, es decir consultas con “reads” pequeños pero ejecutados con mucha frecuencia.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-114106700655403858?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/114106700655403858/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=114106700655403858' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114106700655403858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114106700655403858'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/02/sql-optimizacin-de-las-consultas.html' title='SQL: Optimización de las consultas'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-114056541076457652</id><published>2006-02-21T16:29:00.000-07:00</published><updated>2006-02-21T16:43:30.790-07:00</updated><title type='text'>SQL Profiler: Recomendaciones para el Trace</title><content type='html'>&lt;span style="color:#996633;"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Recomendaciones&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; del libro que estoy leyendo ( “&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;SQL Server Query Performance Tuning Distilled, Second Edition&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt; by Sajal Dam” ). &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Limitar el numero de eventos y columnas&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;: Se utiliza la &lt;em&gt;&lt;span style="color:#3333ff;"&gt;PRE y POST filtración&lt;/span&gt;&lt;/em&gt;, esto es importante ya que de lo contrario estaríamos utilizando muchos recursos. Prefiltrar es estar viendo al momento las actividades capturadas y postfiltrar es donde analizas lo capturado.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Sacar los eventos Start&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;. Nos dicen que &lt;span style="color:#3333ff;"&gt;&lt;em&gt;no los necesitamos&lt;/em&gt;&lt;/span&gt; puesto que lo que queremos es ver resultados &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;em&gt;cuando se terminan de ejecutar los procesos, ahí es cuando tendremos resultados de la duración, costos, etc.&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Limitar el tamaño del rastreo&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;: Se nos recomienda &lt;em&gt;&lt;span style="color:#3333ff;"&gt;poner en propiedades la Duración y las lecturas &gt; 2&lt;/span&gt;&lt;/em&gt; ya que las menores no son muy optimizables.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Evitar ordenamientos al momento de hacer el rastreo&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;. Es preferible &lt;em&gt;&lt;span style="color:#3333ff;"&gt;hacer este ordenamiento una vez que se termine de ejecutar el trace&lt;/span&gt;&lt;/em&gt;, lo que debemos de hacer es grabarlo y entonces si, aplicar los ordenamientos y agrupaciones que queramos.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;No Ejecutar el profiler remotamente&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;. Nos dice que &lt;span style="color:#3333ff;"&gt;no&lt;/span&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt; esta bien ejecutar herramientas de pruebas en el servidor de producción&lt;/span&gt;&lt;/em&gt;, esto porque el profiler no corre por una sesión remota, y además porque los resultados los dejaría en un directorio del Server y no de nuestra PC.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;&lt;em&gt;Capturar el rastreo utilizando Procedimientos Almacenados&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;. Es recomendable &lt;em&gt;&lt;span style="color:#3333ff;"&gt;hacer el rastreo con un procedimiento almacenado ya que es mas ligero&lt;/span&gt;&lt;/em&gt;. Lo malo de esto es que &lt;span style="color:#3333ff;"&gt;&lt;em&gt;es tardado crear el script de este store procedure&lt;/em&gt;&lt;/span&gt;, porque &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;em&gt;se necesitan los siguientes comandos:&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;em&gt;sp_trace_create&lt;/em&gt;&lt;/span&gt;: Creamos el rastreo.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;sp_trace_setevent&lt;/span&gt;&lt;/em&gt;: Agregamos eventos y columnas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;sp_trace_setfilter&lt;/span&gt;&lt;/em&gt;: Aplicamos filtros.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;sp_trace_setstatus&lt;/span&gt;&lt;/em&gt;: Iniciamos el rastreo.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Para evitar hacer el script se nos recomienda lo siguiente&lt;/span&gt;&lt;/em&gt;: &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Abrir el profiler&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Conectarnos al servidor.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Abrir un templete ya existente o bien definir uno nuevo.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Correr el trace ( temporalmente )&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Parar el trace.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Crear un SQL Script de este trace o rastreo.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Abrir este Script en el Query Analyzer.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#996633;"&gt;Modificar el parámetro “InsertFileNameHere” del comando sp_trace_create&lt;br /&gt;Ejecutar el Script, con esto comercia el trace, nos dara un ID ( traceid ) que lo usas para detener el trace.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Para detener el trace&lt;/span&gt;&lt;/em&gt; podemos ejecutar el siguiente codigo: &lt;span style="color:#3333ff;"&gt;&lt;em&gt;EXEC sp_trace_setstatus 1, 0&lt;/em&gt;&lt;/span&gt;   despues de esto &lt;em&gt;&lt;span style="color:#3333ff;"&gt;debemos de cerar y borrar el trace&lt;/span&gt;&lt;/em&gt;, esto se hace con el siguiente codigo: &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;em&gt;sp_trace_setstatus 1, 2&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-114056541076457652?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/114056541076457652/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=114056541076457652' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114056541076457652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114056541076457652'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/02/sql-profiler-recomendaciones-para-el.html' title='SQL Profiler: Recomendaciones para el Trace'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-114047316531766726</id><published>2006-02-20T15:04:00.000-07:00</published><updated>2006-02-21T10:47:40.730-07:00</updated><title type='text'>SQL: Data Columns y Filtros del trace</title><content type='html'>&lt;p&gt;&lt;font color="#666666"&gt;&lt;font color="#996633"&gt;Continuando con el profiler, esta herramienta nos permite&lt;/font&gt; &lt;font color="#3333ff"&gt;&lt;em&gt;&lt;strong&gt;seleccionar que columnas de datos queremos visualizar&lt;/strong&gt;&lt;/em&gt;,&lt;/font&gt;&lt;font color="#3333ff"&gt; &lt;/font&gt;&lt;font color="#996633"&gt;estas columnas representan diferentes atributos de un evento, las columnas que utilizaríamos serian al menos las siguientes:&lt;/font&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;EventClass&lt;/font&gt;&lt;/strong&gt; ( Tipo de Evento ) &lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;TextData&lt;/font&gt;&lt;/strong&gt; ( Operación ejecutada ) &lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;CPU&lt;/font&gt;&lt;/strong&gt; ( Costo en milisegundos del CPU )&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;Reads&lt;/font&gt;&lt;/strong&gt; ( Numero de lecturas )&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;Writes&lt;/font&gt;&lt;/strong&gt; ( Numero de escrituras )&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;Duration&lt;/font&gt;&lt;/strong&gt; ( Tiempo de ejecución en milisegundos )&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;SPID&lt;/font&gt;&lt;/strong&gt; ( Identificador del proceso )&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#666666"&gt;&lt;font color="#996633"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;StartTime&lt;/font&gt;&lt;/strong&gt; ( Tiempo de arranque ).&lt;/font&gt; &lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;font color="#666666"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#666666"&gt;&lt;font color="#996633"&gt;Estas columnas las podemos especificar dentro de la herramienta en la pestaña de Data Columns. Además de las ya mencionadas columnas &lt;font color="#3333ff"&gt;&lt;strong&gt;&lt;em&gt;existen muchas mas que pueden ser de gran ayuda&lt;/em&gt;&lt;/strong&gt;,&lt;/font&gt; unas de las que me llamaron la atención para agregarlas son las de:&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;EventSubClass&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;DatabaseID&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;IndexId&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;Error&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#666666"&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;TransactionID.&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;font color="#666666"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#996633"&gt;También es conveniente ponerle &lt;em&gt;&lt;strong&gt;&lt;font color="#3333ff"&gt;filtros&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt; a nuestro rastreo &lt;font color="#3333ff"&gt;&lt;em&gt;&lt;strong&gt;ya que&lt;/strong&gt; &lt;strong&gt;no es necesario tener todo lo que se esta ejecutando&lt;/strong&gt;, &lt;strong&gt;sino solo lo que esta entorpeciendo el desempeño de la base de datos&lt;/strong&gt;&lt;/em&gt;.&lt;/font&gt; Podemos filtrar los eventos para solo tener los que se presentan en la aplicación y base de datos que queremos, para los eventos que duran mucho ( &lt;strong&gt;poner mayor a 2&lt;/strong&gt; ), para los que realizan muchas lecturas y talvez de algún usuario en especial.&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-114047316531766726?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/114047316531766726/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=114047316531766726' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114047316531766726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114047316531766726'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/02/sql-data-columns-y-filtros-del-trace.html' title='SQL: Data Columns y Filtros del trace'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-114004148286112101</id><published>2006-02-15T14:56:00.000-07:00</published><updated>2006-02-21T10:02:57.403-07:00</updated><title type='text'>SQL: Que podemos hacer con el SQL Profiler.</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="color:#666666;"&gt;Esta herramienta nos sirve para &lt;strong&gt;&lt;em&gt;Monitorear las actividades del servidor SQL, analisis de rendimiento, Diagnosticar problemas, etc.&lt;/em&gt;&lt;/strong&gt; Tambien se pueden capturar las actividades desarrolladas en el server, esto se hace con el &lt;strong&gt;"TRACE".&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#666666;"&gt;Este trace tiene diferentes&lt;strong&gt;&lt;em&gt; eventos&lt;/em&gt;&lt;/strong&gt;, entre los cuales tenemos &lt;em&gt;&lt;strong&gt;eventos por cursores, Procedimentos almacenados, por locks y consultas&lt;/strong&gt;&lt;/em&gt;, cada evento tiene una descripcion que nos va a ayudar en este caso para realizar un analisis de desempeño y realizar acciones correctivas si es necesario.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#666666;"&gt;&lt;strong&gt;&lt;em&gt;El analisis del desempeño se realiza una vez que los eventos terminan&lt;/em&gt;&lt;/strong&gt;, los eventos que me van a servir a mi son de Store Procedures ( RPC y Stmt ) y TSQL. &lt;em&gt;&lt;strong&gt;Los RPC&lt;/strong&gt;&lt;/em&gt; son procesos que son ejecutados usando Remote Procedure Call, esto &lt;strong&gt;&lt;em&gt;se ejecuta por el driver ODBC y son ejecutadas mas rapido que si ponemos un EXEC en una sentencia TSQL&lt;/em&gt;&lt;/strong&gt;. &lt;em&gt;&lt;strong&gt;Los Stmt son sentencias de SQL dentro de un Store Procedure&lt;/strong&gt;&lt;/em&gt;, esto puede ser un SELECT COUNT(Emp_ID) FROM Empleados.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#666666;"&gt;Bueno ya sabemos de algunos de los eventos que necesitamos, pero como capturar estos eventos?, &lt;em&gt;&lt;strong&gt;como tener solamente los que queremos ver?,&lt;/strong&gt;&lt;/em&gt; puesto que el Profiler tiene una lista de eventos muy grande, pues es muy sencillo, &lt;strong&gt;&lt;em&gt;en el Profiler viene una pestaña que tiene el listado de los eventos y ahi los añadimos y removemos.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#666666;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#666666;"&gt;Como dije anteriormente, &lt;em&gt;&lt;strong&gt;solo sabemos de algunos eventos, existen aun mas&lt;/strong&gt;&lt;/em&gt;, voy a poner una lista que viene en el libro que estoy tomando como referencia para todo esto.&lt;strong&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#666666;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://photos1.blogger.com/blogger/3308/2145/1600/Tabla%20de%20Eventos.jpg"&gt;&lt;span style="color:#666666;"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/3308/2145/320/Tabla%20de%20Eventos.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#666666;"&gt;&lt;br /&gt;&lt;br /&gt;Bueno, falta muchisimo que leer, seguire leyendo y conforme tenga mas conocimientos del tema los ire escribiendo aqui.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-114004148286112101?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/114004148286112101/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=114004148286112101' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114004148286112101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114004148286112101'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/02/sql-que-podemos-hacer-con-el-sql.html' title='SQL: Que podemos hacer con el SQL Profiler.'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-114003913152869646</id><published>2006-02-15T14:25:00.000-07:00</published><updated>2006-02-15T14:40:51.646-07:00</updated><title type='text'>SQL Profiler: Trace</title><content type='html'>En el trabajo se esta presentando un problema que al principio no existia, este problema es que se estan generando excepciones de "time-out", para no darle tantas vueltas a las cosas ire al grano. Me comento &lt;a href="http://pozotecnico.carlosmadrigal.com/"&gt;Carlos Madrigal&lt;/a&gt; que podemos utilizar el Trace que trae la herramienta SQL Profiler para poder hacer un rastreo de las excepciones, y ver cuales son los procesos que estan causando estos bloqueos.&lt;br /&gt;&lt;br /&gt;Tambien me recomendo un Libro &lt;em&gt;"SQL Server Query Performance Tuning Distilled, Second Edition by Sajal Dam"&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Voy  a empezar a leerlo y estare escribiendo mis avances.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-114003913152869646?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/114003913152869646/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=114003913152869646' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114003913152869646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/114003913152869646'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/02/sql-profiler-trace.html' title='SQL Profiler: Trace'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-113840716607405687</id><published>2006-01-27T16:54:00.000-07:00</published><updated>2006-01-27T17:12:46.080-07:00</updated><title type='text'>Upps</title><content type='html'>Ya encontre una forma mas facil para hacer lo que comentaba en el tema del REPLICATE, como dice ahi lo que necesitabamos era tomar el año y el mes de una variable tipo fecha (YYYYMM).&lt;br /&gt;&lt;br /&gt;Sencillamente esto se resuelve asi:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;convert(char(6), sInv_LoadDate, 112)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;donde sInv_LoadDate es una variable tipo fecha.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo que nos paso fue que corrimos el query asi:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;convert(char(6), '1/25/2005 10:00:00 PM', 112)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y pues nos dio este resultado: &lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;'1/25/2'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por eso pensamos que no funcionaba, buscamos otra solucion, etc, etc .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El punto es que lo debimos hacer con la variable tipo fecha y no con la cadena.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-113840716607405687?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/113840716607405687/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=113840716607405687' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113840716607405687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113840716607405687'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/01/upps.html' title='Upps'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-113838642725854673</id><published>2006-01-27T10:17:00.000-07:00</published><updated>2006-01-27T11:28:37.546-07:00</updated><title type='text'>SQL: Replicate</title><content type='html'>Hace unos dias, resolviendo un problema que traiamos en el trabajo usamos la funcion REPLICATE. Lo que pasaba era que de una fecha necesitabamos solamente el año y el mes ( YYYYMM ), esto porque el reporte era por periodos. Buenos, entonces dijimos hay que sacar el año y el mes y los concatenamos no???&lt;br /&gt;&lt;br /&gt;Pero la funcion MONTH() regresa un int, asi que :&lt;br /&gt;&lt;br /&gt;1) Si hacemos esto:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;SELECT YEAR('1/30/2005 5:40:58 PM') + MONTH('1/30/2005 5:40:58 PM')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;Lo que pasa es que nos suma &lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;2005 + 1 = 2006&lt;/span&gt; y pues claro, esto no es lo que buscamos.&lt;br /&gt;&lt;br /&gt;2) Entonces pensamos, hay que convertirlas a char:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;SELECT CAST(YEAR('1/30/2005 5:40:58 PM') AS CHAR(4)) + CAST(MONTH('1/30/2005 5:40:58 PM') AS CHAR(2)) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pero ahi nos topamos con otro problema, nos regreso &lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;'20051'&lt;/span&gt; debido a que la funcion MONTH() solo regreso un &lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;'1'&lt;/span&gt; y no un &lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;'01'&lt;/span&gt;&lt;/span&gt; como hubieramos deseado &lt;span style="font-family:courier new;font-size:85%;"&gt;('200501')&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Entonces recorde que habia buscado una vez una funcion para ponerle ceros a la izquierda a unos cheques, pero no me acordaba ni cual era ni donde la habia usado, asi que tarde buen rato buscando hasta que la encontre.&lt;br /&gt;&lt;br /&gt;3) Usamos el REPLICATE() para ponerle un cero a la izquierda al mes y concatenarlo:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;SELECT CAST(YEAR('1/30/2005 5:40:58 PM') AS CHAR(4)) + REPLICATE('0',&lt;span style="font-size:180%;"&gt;&lt;strong&gt;2-&lt;/strong&gt;&lt;/span&gt;LEN(CAST(MONTH('1/30/2005 5:40:58 PM') AS CHAR(2))))+ CAST(MONTH('1/30/2005 5:40:58 PM') AS CHAR(2))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;pero, porque puse ese 2- tan grandote? Ah pues porque es muy importante que lo pongamos ya que ahi estamos diciendole el tamaño de longitud de la cadena. Es que el replicate lo que hace es repetir una cadena el numero de veces que tu le digas, por lo tanto lo que hicimos fue repetir el cero 1 vez ( 2 - 1).&lt;br /&gt;&lt;br /&gt;2-1? Si, el 2 yo lo puse y el 1 sale de la longitud del mes, osea 1. Y que pasaria con meses de 2 digitos? pues &lt;span style="font-family:arial;font-size:85%;"&gt;2-LEN(MONTH('11/30/2005 5:40:58 PM'))&lt;/span&gt; es 2-0 = 0, y pues no pondra ningun cero y solo concatenaremos el mes de dos digitos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bueno el punto es que el REPLICATE() repite cadenas las veces que le digas y si necesitas ponerle ceros a la izquierda a alguna cadena pues asi lo puedes hacer.&lt;br /&gt;&lt;br /&gt;Otro ejempo:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff0000;"&gt;SELECT REPLICATE('0', 10-LEN(270)) + CAST(270 AS CHAR(10))&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-113838642725854673?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/113838642725854673/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=113838642725854673' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113838642725854673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113838642725854673'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/01/sql-replicate.html' title='SQL: Replicate'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21559780.post-113832058470452349</id><published>2006-01-26T17:09:00.000-07:00</published><updated>2006-01-26T19:10:03.226-07:00</updated><title type='text'>Inicio</title><content type='html'>El dia de hoy me anime a crear un blog, en este voy a ir metiendo vivencias que vaya teniendo ( Dentro del area de Sistemas Computacionales ).&lt;br /&gt;Hasta hace pocos dias tenia la idea que un Blog era para personas con muchisima sabiduria, gente que realmente aporta conocimientos y pues me dije "Yo que voy a aportar?", pero pues ese no es el unico proposito, esto ayuda en muchisimas cosas mas, principalmente al que los escribe.&lt;br /&gt;Asi pues, aqui voy ir escribiendo algunas cosas que vaya aplicando en mi trabajo y lo que vaya aprendiendo de lecturas que vaya haciendo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21559780-113832058470452349?l=oasis-luisenrique.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oasis-luisenrique.blogspot.com/feeds/113832058470452349/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21559780&amp;postID=113832058470452349' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113832058470452349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21559780/posts/default/113832058470452349'/><link rel='alternate' type='text/html' href='http://oasis-luisenrique.blogspot.com/2006/01/inicio.html' title='Inicio'/><author><name>Luis Enrique Morales</name><uri>http://www.blogger.com/profile/13780535384469351961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://pics-34.hi5.com/userpics/634/120/120555634.img.jpg'/></author><thr:total>2</thr:total></entry></feed>
