<?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-1798367132777544496</id><updated>2011-11-28T01:47:03.124+01:00</updated><category term='Operador as'/><category term='SQL'/><category term='In data row error'/><category term='MailMessage'/><category term='teclas rápidas IE'/><category term='free'/><category term='sentencias sql server'/><category term='INSERT'/><category term='SqlBackup'/><category term='enable trigger'/><category term='Utilidades'/><category term='Office 14'/><category term='Windows'/><category term='gratis'/><category term='Telefono windows'/><category term='error nueva consulta'/><category term='Credentials'/><category term='XAML'/><category term='MsiSetExternalUIRecord'/><category term='MSWord9.olb'/><category term='Obtener columnas tabla'/><category term='ejecutar lote varias veces'/><category term='Backup'/><category term='Precio Licencias SQL Server 2008'/><category term='rss'/><category term='sysobjects'/><category term='DataConnectionDialog'/><category term='DBNETLIB'/><category term='Mailing masivo'/><category term='Ejecución diferida'/><category term='Mail Bombing'/><category term='Error'/><category term='ThumbDB'/><category term='error en índice nonclustered'/><category term='Windows Server 2008 y MSDE 2000'/><category term='MSDE 2000'/><category term='reconstruir bases de datos del sistema'/><category term='syscolumns'/><category term='xml a tabla'/><category term='performance constructor'/><category term='LINQ'/><category term='TABLE'/><category term='Operador is'/><category term='SQL Server 2005'/><category term='restore database'/><category term='XML'/><category term='Timeout expired'/><category term='GUSENET'/><category term='sendmail'/><category term='ejemplos sql server'/><category term='BackupDeviceItem'/><category term='SmoExtended'/><category term='ejecución inmediata'/><category term='Interop'/><category term='ConnectionUI'/><category term='REPAIR_ALLOW_DATA_LOSS'/><category term='MERGE'/><category term='keyboard shorcuts IE'/><category term='Simon'/><category term='parámetro por referencia'/><category term='out'/><category term='función definida por el usuario'/><category term='Rellenar tabla'/><category term='Versiones SQL Server'/><category term='Kill BD connection'/><category term='DBA'/><category term='CSharp'/><category term='version 660'/><category term='disable trigger'/><category term='ctor'/><category term='SQLExamples'/><category term='T-SQL'/><category term='LINQ to XML'/><category term='Rebuild master'/><category term='Explanation'/><category term='OS'/><category term='SQLFile.sql'/><category term='Excel'/><category term='DBCC CHECKDB'/><category term='mail'/><category term='CLR'/><category term='ejecutar batch varias veces'/><category term='Tabla'/><category term='SqlException'/><category term='NC373i'/><category term='Trigger'/><category term='Error JumpStartTV'/><category term='Deep Zoom Composer'/><category term='SQL Server'/><category term='cortafuegos'/><category term='cerrar conexiones BD'/><category term='atajo teclado IE'/><category term='General Network error'/><category term='sys.dm_io_virtual_file_stats'/><category term='copia de seguridad SMO'/><category term='Resource database'/><category term='SqlError'/><category term='ebook'/><category term='Filling a Table'/><category term='teclas rápidas IE8'/><category term='Windows Phone'/><category term='TCPChimney'/><category term='TlbImp.exe'/><category term='SqlDataSourceEnumerator'/><category term='Profiler'/><category term='Spamming'/><category term='Error severity level'/><category term='rendimiento constructor'/><category term='restaurar con SMO'/><category term='SQL SERVER videos'/><category term='firewall'/><category term='enviar mail'/><category term='control-of-flow sql server'/><category term='OPENROWSET'/><category term='Msg 602 level 21'/><category term='rendimiento casting'/><category term='Suspect database'/><category term='Thumbs'/><category term='sp_MSforeachtable'/><category term='BD Sospechosa'/><category term='SQL Server Version'/><category term='Tiempo de espera agotado'/><category term='SQL Server 2008'/><category term='stored procedure'/><category term='ALTER TABLE'/><category term='Red Gate'/><category term='Office'/><category term='Quest Software'/><category term='STOP: 0x0000007A'/><category term='ref'/><category term='SQL Server configuration'/><category term='Visual'/><category term='GetDataSources'/><category term='free eBook'/><category term='Three-state Checkbox'/><category term='GO'/><category term='Broadcom NetXtreme II'/><category term='SQL Join'/><category term='VB'/><category term='Casting'/><category term='Office 2010'/><category term='undocumented stored procedures'/><category term='constructor'/><category term='Integración CLR'/><category term='C#'/><category term='nonclustered index error'/><category term='Drag and drop'/><category term='PictureBox drag and drop'/><category term='ThumbDBLib'/><category term='SQL Server configuracion'/><category term='SQL Server 2008 Pricing'/><category term='ALTER'/><category term='SQL Server 2008 R2'/><category term='Windows Mobile 6.5'/><category term='SMO'/><category term='version 655'/><category term='Recetas TSQL'/><category term='Columnas'/><category term='KERNEL_DATA_INPAGE_ERROR'/><category term='WPF'/><category term='Silverlight'/><category term='CodePlex'/><category term='io_stall'/><title type='text'>FRVSoft</title><subtitle type='html'>Desarrollo de software con VB, C#, SQL Server y sucesos graciosos del día a día.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4597626003442608987</id><published>2011-11-27T10:30:00.001+01:00</published><updated>2011-11-27T10:37:27.401+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Red Gate'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='free eBook'/><title type='text'>Troubleshooting SQL Server [free eBook]</title><content type='html'>Os dejo un link de Red Gate dónde podréis descargar este libro:&lt;br /&gt;&lt;b&gt;Troubleshooting SQL Server A guide for the accidental DBA. Jonathan Kehayias and Ted Krueger.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.red-gate.com/our-company/about/book-store/accidental-dba"&gt;http://www.red-gate.com/our-company/about/book-store/accidental-dba&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Si os gusta, también podéis comprar la edición impresa en Amazon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4597626003442608987?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4597626003442608987/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4597626003442608987' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4597626003442608987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4597626003442608987'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2011/11/troubleshooting-sql-server-free-ebook.html' title='Troubleshooting SQL Server [free eBook]'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2111652571625993115</id><published>2011-11-03T23:30:00.001+01:00</published><updated>2011-11-03T23:30:36.081+01:00</updated><title type='text'>Ahora también en tu móvil</title><content type='html'>Ya podéis leer los post desde vuestros móviles. Tengo futuros post en mente que espero compartir con vosotros. Nos leemos en breve.Salu2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2111652571625993115?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2111652571625993115/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2111652571625993115' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2111652571625993115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2111652571625993115'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2011/11/ahora-tambien-en-tu-movil.html' title='Ahora también en tu móvil'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7641076314811595666</id><published>2010-02-08T15:22:00.003+01:00</published><updated>2010-02-08T15:53:12.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disable trigger'/><category scheme='http://www.blogger.com/atom/ns#' term='enable trigger'/><category scheme='http://www.blogger.com/atom/ns#' term='Trigger'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Desactivar un Trigger temporalmente</title><content type='html'>Para desactivar un trigger temporalmente y luego volver a activarlo, tenemos que hacer lo siguiente:&lt;br /&gt;&lt;br /&gt;ALTER TABLE miTabla DISABLE TRIGGER ALL&lt;br /&gt;--aquí ejecutaremos lo que necesitemos y luego lo volvemos a activar&lt;br /&gt;ALTER TABLE miTabla ENABLE TRIGGER ALL&lt;br /&gt;&lt;br /&gt;Realmente desactiva todos los triggers de esa tabla, si queremos uno en concreto en lugar de ALL especificamos el nombre del trigger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7641076314811595666?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7641076314811595666/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7641076314811595666' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7641076314811595666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7641076314811595666'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2010/02/desactivar-un-trigger-temporalmente.html' title='Desactivar un Trigger temporalmente'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-998659356216116532</id><published>2009-11-21T18:21:00.005+01:00</published><updated>2009-11-21T18:32:21.195+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='error nueva consulta'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLFile.sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Tips &amp; Tricks Error SQLFile.sql</title><content type='html'>Al intentar ejecutar una consulta con el management studio nos da un error:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SwgiqyZYcSI/AAAAAAAAAGM/iLfSqNKkGD0/s1600/ErrorSQLFile.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 122px;" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SwgiqyZYcSI/AAAAAAAAAGM/iLfSqNKkGD0/s320/ErrorSQLFile.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5406609471136362786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para solucionarlo, podemos crearnos en ese mismo directorio un fichero que se llame SQLFile.sql sin contenido, y asunto solucionado. Otra manera es copiar el mismo fichero de otro equipo en el que tengamos SQL Server 2005 o 2008 instalado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-998659356216116532?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/998659356216116532/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=998659356216116532' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/998659356216116532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/998659356216116532'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/11/tips-tricks-error-sqlfilesql.html' title='Tips &amp; Tricks Error SQLFile.sql'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/SwgiqyZYcSI/AAAAAAAAAGM/iLfSqNKkGD0/s72-c/ErrorSQLFile.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5689720480637200243</id><published>2009-11-21T16:34:00.002+01:00</published><updated>2009-11-21T18:14:48.880+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sentencias sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Recetas TSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='control-of-flow sql server'/><title type='text'>Recetario T-SQL</title><content type='html'>A groso modo vamos a ver el flujo que sigue una query:&lt;br /&gt;&lt;br /&gt;Análisis -- Algebrizer (no se como traducirlo xD) -- Optimización -- Ejecución&lt;br /&gt;&lt;br /&gt;Ahora veamos una pregunta que me llegaba vía email:&lt;br /&gt;Supongamos que tenemos una tabla Prueba con dos columnas (IDPrueba y Descripcion), ejecutamos un script que elimina la columna Descripcion de la tabla y más adelante en el script encontramos lo siguiente:&lt;br /&gt;IF 1=0&lt;br /&gt;BEGIN&lt;br /&gt;   UPDATE Prueba SET Descripcion='Hola'&lt;br /&gt;       WHERE IDPrueba = 1&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;Como 1 no es igual a cero no debe ejecutarse el contenido, pero al ejecutar el script vemos que nos devuelve un error advirtiéndonos de que el campo Descripcion es erróneo.&lt;br /&gt;Mens. 207, Nivel 16, Estado 1, Línea 3&lt;br /&gt;El nombre de columna 'Descripcion' no es válido.&lt;br /&gt;&lt;br /&gt;Una solución para que no nos de este error es usar SQL dinámico y nuestro código quedaría tal que así:&lt;br /&gt;IF 1=0&lt;br /&gt;BEGIN&lt;br /&gt;   EXECUTE('UPDATE Prueba SET Descripcion=''Hola''&lt;br /&gt;       WHERE IDPrueba = 1')&lt;br /&gt;END&lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5689720480637200243?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5689720480637200243/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5689720480637200243' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5689720480637200243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5689720480637200243'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/11/recetario-t-sql.html' title='Recetario T-SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2008570690145728035</id><published>2009-11-11T23:36:00.003+01:00</published><updated>2009-11-11T23:47:50.190+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='restore database'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='restaurar con SMO'/><title type='text'>Restore Database con SMO C#</title><content type='html'>Bueno para ir completando la serie de posts con SMO hoy toca el esperado restore. Antes de nada pediros disculpas por no haberlo publicado antes, pero ando liado por casa y no he tenido tiempo para actualizar el blog.&lt;br /&gt;&lt;br /&gt;Aquí tenéis el código:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/Svs9qfQiv7I/AAAAAAAAAGE/y-bQSVmDyRw/s1600-h/RestoreDB.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 182px;" src="http://1.bp.blogspot.com/_x1HanhtyMG8/Svs9qfQiv7I/AAAAAAAAAGE/y-bQSVmDyRw/s320/RestoreDB.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5402979978115727282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A tener en cuenta: en la cadena de conexión sólo especificad el servidor (Data Source) y el tipo de conexión (si es trusted o con credenciales de sql).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2008570690145728035?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2008570690145728035/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2008570690145728035' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2008570690145728035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2008570690145728035'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/11/restore-database-con-smo-c.html' title='Restore Database con SMO C#'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1HanhtyMG8/Svs9qfQiv7I/AAAAAAAAAGE/y-bQSVmDyRw/s72-c/RestoreDB.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2558770444159603063</id><published>2009-09-30T23:28:00.004+02:00</published><updated>2009-10-01T00:34:47.636+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interop'/><category scheme='http://www.blogger.com/atom/ns#' term='TlbImp.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><category scheme='http://www.blogger.com/atom/ns#' term='MSWord9.olb'/><title type='text'>Compatibilidad hacia atrás en Office</title><content type='html'>Mediante la aplicación TlbImp.exe (http://msdn.microsoft.com/es-es/library/tt0cf3sx(VS.80).aspx) podremos convertir un componente COM de Office (por ser el tema del post) en una assembly .NET Interop lista para usar y distribuir con nuestra aplicación. La manera de hacerlo es simple y directa:&lt;br /&gt;1.- Lo primero es localizar dónde está situada la aplicación TlbImp.exe: se encuentra en C:\Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\Bin\ &lt;br /&gt;(o bien en la unidad dónde tengáis instalado Visual Studio)&lt;br /&gt;2.- Copiamos el fichero (.olb ver último link del post para saber de lo que hablo) que queremos convertir en nuestra dll .NET, en un directorio por ejemplo C:\Interop&lt;br /&gt;3.- Abrimos la línea de comando y vamos hasta la ruta dónde tenemos la aplicación TlbImp y escribimos &lt;br /&gt;C:\Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\Bin\&lt;strong&gt;TlbImp.exe C:\Interop\MSWord9.olb /out=C:\Interop\FRVSoft.Office.Word.dll&lt;/strong&gt;&lt;br /&gt;Y ya tendremos creada nuestra dll.&lt;br /&gt;&lt;br /&gt;Ahora sólo tenemos que añadirla en las referencias de nuestro proyecto. Con esto conseguimos tener una compatibilidad desde Word 2000 hasta Word 2007. Claro está que si queremos usar alguna característica nueva de Office 2007 no dispondremos de ella en nuestra dll ya que partimos de la versión 2000.&lt;br /&gt;&lt;br /&gt;Este enlace os puede ser de utilidad algún día en el futuro, cuando tengáis que pelear con Office desde vuestras aplicaciones, en distintos clientes con diferentes versiones de Office:&lt;br /&gt;http://support.microsoft.com/kb/239930/es&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2558770444159603063?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2558770444159603063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2558770444159603063' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2558770444159603063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2558770444159603063'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/compatibilidad-hacia-atras-en-office.html' title='Compatibilidad hacia atrás en Office'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3724940847077616937</id><published>2009-09-11T22:35:00.003+02:00</published><updated>2009-09-11T22:39:05.309+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLExamples'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='ejemplos sql server'/><title type='text'>Soluciones a problemas relacionados con T-SQL</title><content type='html'>Otro link interesante con multitud de soluciones e ideas para abordar los problemas del día a día.&lt;br /&gt;&lt;br /&gt;http://code.msdn.microsoft.com/SQLExamples&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3724940847077616937?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3724940847077616937/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3724940847077616937' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3724940847077616937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3724940847077616937'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/soluciones-problemas-relacionados-con-t.html' title='Soluciones a problemas relacionados con T-SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5629250235488609650</id><published>2009-09-11T22:23:00.003+02:00</published><updated>2009-09-11T22:28:21.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quest Software'/><category scheme='http://www.blogger.com/atom/ns#' term='free'/><category scheme='http://www.blogger.com/atom/ns#' term='gratis'/><category scheme='http://www.blogger.com/atom/ns#' term='ebook'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Otro eBook por la patilla sobre SQL Server cortesía de Quest Software</title><content type='html'>Aquí tenéis los link para descargaros SQL Server: A Practical Guide to Backup, Recovery &amp; Troubleshooting con copyright de Quest Software&lt;br /&gt;&lt;br /&gt;Parte 1:&lt;br /&gt;http://www.quest.com/quest_site_assets/whitepapers/sql_server_ebook_a_practical_guide_to_backup,_recovery,_and_troubleshooting_(part_1).pdf&lt;br /&gt;&lt;br /&gt;Parte 2:&lt;br /&gt;http://www.quest.com/quest_site_assets/whitepapers/sql_server_ebook_a_practical_guide_to_backup,_recovery,_and_troubleshooting_(part_2).pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5629250235488609650?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5629250235488609650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5629250235488609650' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5629250235488609650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5629250235488609650'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/otro-ebook-por-la-patilla-sobre-sql.html' title='Otro eBook por la patilla sobre SQL Server cortesía de Quest Software'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8506802791537640466</id><published>2009-09-10T19:27:00.002+02:00</published><updated>2009-09-10T19:41:54.375+02:00</updated><title type='text'>AdSense esa gran chapuza</title><content type='html'>Hoy recibo un correo en el que Google AdSense me dice:&lt;br /&gt;&lt;br /&gt;Estimado/a :&lt;br /&gt;&lt;br /&gt;Al revisar nuestros datos, hemos detectado que su cuenta de AdSense ha&lt;br /&gt;supuesto un peligro importante para nuestros anunciantes de AdWords. Dada&lt;br /&gt;la posibilidad de que el mantenimiento de su cuenta en nuestra red de&lt;br /&gt;editores perjudique económicamente a los anunciantes en el futuro, hemos&lt;br /&gt;decidido inhabilitarla.&lt;br /&gt;&lt;br /&gt;Consideramos que esta medida es necesaria para proteger los intereses de&lt;br /&gt;los anunciantes y los de los demás editores de AdSense. Somos conscientes&lt;br /&gt;de que esta situación puede causarle molestias, por lo que agradecemos de&lt;br /&gt;antemano su comprensión y cooperación.&lt;br /&gt;&lt;br /&gt;Si tiene alguna pregunta sobre su cuenta o las acciones que hemos&lt;br /&gt;realizado, no conteste a este mensaje. Encontrará más información en la&lt;br /&gt;página siguiente:&lt;br /&gt;https://www.google.com/adsense/support/bin/answer.py?answer=57153.&lt;br /&gt;&lt;br /&gt;Atentamente,&lt;br /&gt;&lt;br /&gt;El equipo AdSense de Google.&lt;br /&gt;&lt;br /&gt;Macho ni que fuera el Dioni o Roldán. En tres años de AdSense no tengo ni para pipas xDDDD.&lt;br /&gt;Gracias a la gente que haya pinchado en los anuncios.&lt;br /&gt;Seguiré publicando (porque el objetivo es compartir lo que aprendo y plasmarlo por si a otra persona le sirve), y seguramente el blog ganará en espacio para otras cosas y no en anuncios chorras de lectura de manos y sus muertos los cuales aleatoriamente publicaba google.&lt;br /&gt;&lt;br /&gt;P.D. La peonza, la trompeta y el par de calcetines, puedes venir a recogerlos cuando quieras y metértelos por el culo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8506802791537640466?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8506802791537640466/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8506802791537640466' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8506802791537640466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8506802791537640466'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/adsense-esa-gran-chapuza.html' title='AdSense esa gran chapuza'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8599445136349955063</id><published>2009-09-08T21:20:00.003+02:00</published><updated>2009-09-08T21:37:32.847+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='out'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='parámetro por referencia'/><category scheme='http://www.blogger.com/atom/ns#' term='ref'/><title type='text'>C# parámetros por referencia (out y ref)</title><content type='html'>Para el CLR, out y ref son idénticos (generan los mismos metadatos y el mismo código IL), pero el compilador de C# los trata de manera distinta. &lt;br /&gt;&lt;br /&gt;Esa distinción se basa en que, si usamos out en un parámetro de un método, no estamos obligados a inicializar el objeto antes de la llamada al método. En cambio si usamos ref, antes de la llamada al método debemos inicializar el valor del parámetro.&lt;br /&gt;&lt;br /&gt;Otro punto a tener en cuenta es que no podemos sobrecargar un método en el que la sobrecarga difiera sólo en out y ref, ejemplo:&lt;br /&gt;static void Suma(out Int32 n) { }&lt;br /&gt;static void Suma(ref Int32 x) { }&lt;br /&gt;Este caso provocaría un error de tipo 'Suma' cannot define overloaded methods that differ only on ref and out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8599445136349955063?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8599445136349955063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8599445136349955063' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8599445136349955063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8599445136349955063'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/c-parametros-por-referencia-out-y-ref.html' title='C# parámetros por referencia (out y ref)'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-321139833335978065</id><published>2009-09-06T10:02:00.007+02:00</published><updated>2009-09-06T10:55:18.590+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='performance constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='ctor'/><category scheme='http://www.blogger.com/atom/ns#' term='rendimiento constructor'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Mejorando el rendimiento en nuestros constructores de clase</title><content type='html'>Cuanto más leo CLR Via C# más me gusta el libro, una de las cosas que me ha llamado la atención es la manera de declarar los diferentes constructores que pueda tener una clase. Por ejemplo, supongamos que tenemos una clase "X", con "n" campos a inicializar, y en esa clase definimos "X" constructores diferentes, ejemplo:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;internal sealed class MenosRendimiento&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private int _a = 1;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private string _cadena = "Hola";&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private double _n = 5.125;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private byte _b;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MenosRendimiento() { }&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MenosRendimiento(int a) { }&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MenosRendimiento(string cadena) { }&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MenosRendimiento(int a, string cadena) { }&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;De esta forma estamos incurriendo en un gasto de recursos innecesarios, ya que estaremos inicializando los tres campos de la clase en cada constructor (en este caso 12 veces). _b nos garantiza que se inicializa a cero aunque no lo especifiquemos.&lt;br /&gt;&lt;br /&gt;Lo correcto sería declarar los campos de clase sin inicializar, crear un constructor simple que inicialice los campos, y los demás constructores llamarán al constructor de inicialización común, para verlo más claro os pongo como quedaría el código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;internal sealed class MasRendimiento&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private int _a;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private string _cadena;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private double _n;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;private byte _b;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//Este constructor inicializa los campos&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//a su valor por defecto.&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//todos los demás constructores llamarán&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//explícitamente a este constructor&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MasRendimiento() &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_a = 1;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_cadena = "Hola";&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_n = 5.125;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_b = 0xff;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//Campos a valor por defecto y luego&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//cambia a&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MasRendimiento(int a) : this()&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_a = a;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//Campos a valor por defecto y luego&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//cambia cadena&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MasRendimiento(string cadena) : this()&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_cadena = cadena;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//Campos a valor por defecto y luego&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//cambia a y cadena&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public MasRendimiento(int a, string cadena) &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;: this()&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_a = a;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_cadena = cadena;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Esta es la "magia" que nos aporta C#, que mediante "this" podamos llamar de un constructor a otro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-321139833335978065?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/321139833335978065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=321139833335978065' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/321139833335978065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/321139833335978065'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/mejorando-el-rendimiento-en-nuestros.html' title='Mejorando el rendimiento en nuestros constructores de clase'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8102968765577173309</id><published>2009-09-05T21:37:00.003+02:00</published><updated>2009-09-05T21:42:09.621+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copia de seguridad SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Backup'/><title type='text'>Backup con SMO en C#</title><content type='html'>Así ya tenemos a los hermanitos (un ejemplo en el blog en VB y otro en C#):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;try&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;using (SqlConnection cn = new SqlConnection(llConexion.Text))&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;cn.Open();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;serverConnection = new ServerConnection(cn);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Backup bck = new Backup();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;bck.Database = serverConnection.DatabaseName;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;bck.Devices.Add(new BackupDeviceItem(rutaBackup + @"\" + serverConnection.DatabaseName + ".BAK", DeviceType.File));&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;bck.Action = BackupActionType.Database;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;bck.SqlBackup(new Server(serverConnection));&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;MessageBox.Show("Proceso completado");&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;}&lt;br /&gt;catch (SmoException ex)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;MessageBox.Show(ex.Message);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8102968765577173309?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8102968765577173309/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8102968765577173309' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8102968765577173309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8102968765577173309'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/backup-con-smo-en-c.html' title='Backup con SMO en C#'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5027721162179728931</id><published>2009-09-05T20:53:00.006+02:00</published><updated>2009-09-05T21:29:24.507+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='Kill BD connection'/><category scheme='http://www.blogger.com/atom/ns#' term='cerrar conexiones BD'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Kill a todas las conexiones de una BD con SMO</title><content type='html'>Ahí va un post sencillito con SMO:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;using (SqlConnection cn = new SqlConnection(llConexion.Text))&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;cn.Open();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;serverConnection = new ServerConnection(cn);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Server server = new Server(serverConnection);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;server.KillAllProcesses(serverConnection.DatabaseName);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;MessageBox.Show("Proceso terminado");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;Dónde, llConexion.Text será la cadena de conexión con vuestra BD. ServerConnection es una variable global inicializada a null (en el contexto de mi aplicación, para este ejemplo podría haberla declarado después de abrir la conexión de esta manera,&lt;br /&gt;ServerConnection serverConnection = new ServerConnection(cn);)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5027721162179728931?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5027721162179728931/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5027721162179728931' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5027721162179728931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5027721162179728931'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/kill-todas-las-conexiones-de-una-bd-con.html' title='Kill a todas las conexiones de una BD con SMO'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-563806583541811018</id><published>2009-09-04T21:21:00.003+02:00</published><updated>2009-09-04T21:31:18.220+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teclas rápidas IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='atajo teclado IE'/><category scheme='http://www.blogger.com/atom/ns#' term='teclas rápidas IE'/><category scheme='http://www.blogger.com/atom/ns#' term='keyboard shorcuts IE'/><title type='text'>Teclas rápidas IE 8</title><content type='html'>Me encantan los atajos de teclado y no tener que estar dale que te pego al ratón, así que aquí os dejo las teclas rápidas de Internet Explorer 8:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/spain/windows/products/winfamily/ie/quickref.mspx"&gt;http://www.microsoft.com/spain/windows/products/winfamily/ie/quickref.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Que gozada, CTRL+TAB, CTRL+MAY+TAB, ALT+Inicio, CTRL+T, con estas me conformo y luego las pijadillas CTRL+Q&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-563806583541811018?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/563806583541811018/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=563806583541811018' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/563806583541811018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/563806583541811018'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/teclas-rapidas-ie-8.html' title='Teclas rápidas IE 8'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4773912858711860477</id><published>2009-09-02T21:06:00.005+02:00</published><updated>2009-09-02T21:20:06.998+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Telefono windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile 6.5'/><title type='text'>[OT] Teléfono Windows</title><content type='html'>Más bien conocidos como Windows Phone, es la novedad que llegará el próximo 6 de Octubre. En realidad son los nuevos teléfonos equipados con Windows Mobile 6.5 y que serán distribuidos por las principales operadoras de telefonía y los principales fabricantes de teléfonos, aquí os dejo una relación por continentes:&lt;br /&gt;&lt;br /&gt;- En Norte América: operadoras móviles AT&amp;amp;T, Bell Mobility, Sprint, TELUS y Verizon Wireless, fabricantes HP, HTC Corp., LG Electronics, Samsung y Toshiba Corp.&lt;br /&gt;- En Europa: operadoras móviles Orange, Deutsche Telekom AG y Vodafone Group Plc, y fabricantes Acer, HTC, LG Electronics, Samsung, Sony Ericsson y Toshiba&lt;br /&gt;- Latinoamérica: operadoras móviles TIM Brazil, y fabricantes HTC, LG Electronics y Samsung&lt;br /&gt;- En Asia: operadoras móviles NTT DOCOMO Inc., SOFTBANK Mobile Corp., SK Telecom, Telstra y WILLCOM Inc., y fabricantes Acer Inc., HTC, LG Electronics, Samsung, Sony Ericsson y Toshiba&lt;br /&gt;&lt;br /&gt;Al contrario de lo que he leído en otras páginas microsoft asegura que habrá teléfonos para todos los gustos, con teclado qwerty o sin teclado, con pantalla táctil y sin pantalla táctil, con acelerómetro, GPS y cámaras de alta resolución.&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/09/01/windows-phones-are-coming-on-october-6th.aspx"&gt;http://windowsteamblog.com/blogs/windowsphone/archive/2009/09/01/windows-phones-are-coming-on-october-6th.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4773912858711860477?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4773912858711860477/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4773912858711860477' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4773912858711860477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4773912858711860477'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/09/ot-telefono-windows.html' title='[OT] Teléfono Windows'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1557924843382398945</id><published>2009-08-31T21:53:00.004+02:00</published><updated>2009-08-31T22:04:50.656+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Msg 602 level 21'/><category scheme='http://www.blogger.com/atom/ns#' term='version 660'/><category scheme='http://www.blogger.com/atom/ns#' term='version 655'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008 R2'/><title type='text'>SQL Server 2008 R2 y mi BD de Producción</title><content type='html'>Atención, si instaláis la actualización a SQL Server 2008 R2 CTP y atacháis una BD en Producción (digo esta porque es la más importante por el destrozo que puede ocasionar xDDD, pero vale para cualquiera), que sepáis, que si luego os arrepentís y volvéis a SQL Server 2008 SP1 o RTM, no os dejará atachar ni restaurar la BD. El problema radica en que cambia la versión física de la BD a 660 mientras que nuestra BD en SQL Server 2008 SP1 está en una versión 655.&lt;br /&gt;&lt;br /&gt;Esto no lo digo yo, lo dice mi amigo Paul Randal, así que hacedle caso y cuidadín con los probeteos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1557924843382398945?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1557924843382398945/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1557924843382398945' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1557924843382398945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1557924843382398945'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/sql-server-2008-r2-y-mi-bd-de.html' title='SQL Server 2008 R2 y mi BD de Producción'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7522859650716756856</id><published>2009-08-26T09:39:00.003+02:00</published><updated>2009-08-26T09:45:33.193+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSDE 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008 y MSDE 2000'/><title type='text'>Windows Server 2008 y MSDE 2000</title><content type='html'>He leído en internet, a gente que dice que la MSDE 2000 no funciona bajo Windows Server 2008, porque es demasiado vieja, etc.&lt;br /&gt;Puedo deciros que es completamente falso, ya que en uno de nuestros clientes tenemos funcionando nuestra aplicación de gestión bajo MSDE 2000 con SP4 en un servidor con Windows Server 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7522859650716756856?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7522859650716756856/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7522859650716756856' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7522859650716756856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7522859650716756856'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/windows-server-2008-y-msde-2000.html' title='Windows Server 2008 y MSDE 2000'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4434214135338743388</id><published>2009-08-13T13:37:00.006+02:00</published><updated>2009-08-13T14:00:23.076+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='xml a tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='OPENROWSET'/><title type='text'>Importar fichero XML a una tabla</title><content type='html'>Esto sólo funciona para SQL Server 2005 y SQL Server 2008. Se puede conseguir gracias a la opción BULK de OPENROWSET y luego usando la capacidad XQuery que nos proporciona SQL Server para parsear el xml en una tabla.&lt;br /&gt;&lt;div&gt;Al lío que me lío.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;En C:\Libros.xml tengo un xml conteniendo:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SoP-m4Dt2PI/AAAAAAAAAF0/yxok8uXhdrc/s1600-h/XMLaTabla2.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 265px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5369415124592220402" border="0" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SoP-m4Dt2PI/AAAAAAAAAF0/yxok8uXhdrc/s320/XMLaTabla2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Lo que intento es volcar los datos de ID y Titulo en una tabla Libros, para ello, nos creamos la tabla:&lt;/div&gt;&lt;br /&gt;&lt;p&gt;--Creamos la tabla&lt;br /&gt;CREATE TABLE Libros(&lt;br /&gt;ID INT PRIMARY KEY,&lt;br /&gt;Titulo VARCHAR(100))&lt;/p&gt;&lt;p&gt;Y ahora pasamos los datos (os pongo una imagen con todo el código y el resultado del select sobre la tabla):&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SoP_TpVNX4I/AAAAAAAAAF8/l1kcJxgnzow/s1600-h/XMLaTabla.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 246px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5369415893733171074" border="0" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SoP_TpVNX4I/AAAAAAAAAF8/l1kcJxgnzow/s320/XMLaTabla.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4434214135338743388?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4434214135338743388/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4434214135338743388' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4434214135338743388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4434214135338743388'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/importar-fichero-xml-una-tabla.html' title='Importar fichero XML a una tabla'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/SoP-m4Dt2PI/AAAAAAAAAF0/yxok8uXhdrc/s72-c/XMLaTabla2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2483286928073442970</id><published>2009-08-05T19:02:00.004+02:00</published><updated>2009-08-05T21:16:17.032+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STOP: 0x0000007A'/><category scheme='http://www.blogger.com/atom/ns#' term='KERNEL_DATA_INPAGE_ERROR'/><title type='text'>Pantallazo azul</title><content type='html'>&lt;div&gt;Bueno con esto quiero responder a un correo de un amigo y la discusión que planteaba en el correo. En esta imagen se puede ver una máquina de CocaCola con un pantallazo azul. El motivo de este post es aclarar que ese pantallazo azul no es consecuencia de un error de memoria, sino un error con un controlador USB. Si os fijáis en la última línea del pantallazo veréis que dice &lt;strong&gt;usbhub.sys&lt;/strong&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/Snm8OoOiAbI/AAAAAAAAAFs/XeUOmDdt_AE/s1600-h/ErrorCocaCola.JPG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 257px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5366527390491214258" border="0" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/Snm8OoOiAbI/AAAAAAAAAFs/XeUOmDdt_AE/s320/ErrorCocaCola.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Investigando un poco he llegado a un blog en el que explican este error y su posible solución, el link lo tenéis aquí:&lt;br /&gt;&lt;a href="http://ayudabsod.blogspot.com/2009/06/kerneldatainpageerror-0x0000007a.html"&gt;http://ayudabsod.blogspot.com/2009/06/kerneldatainpageerror-0x0000007a.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Pero como no podemos fiarnos de todo lo que leemos, he seguido investigando un poco más.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Varias de las cosas que he aprendido es:&lt;br /&gt;1.- El pantallazo nos da la información para indagar en el error, sólo tenemos que saber diferenciar la paja del grano. Las tres líneas que nos dan la información son, una que dice, KERNEL_DATA_INPAGE_ERROR&lt;br /&gt;luego otra que dice STOP: 0x0000007A (parámetro1, parámetro2, parámetro3, parámetro4)&lt;br /&gt;y por último la última línea que dice usbhub.sys&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.- Con estos datos vamos a la biblioteca de Microsoft, ya que son sus errores (;-)) y con un poco de suerte tendremos la solución&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms793989.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms793989.aspx&lt;/a&gt;&lt;br /&gt;Si os fijáis en los parámetros entre paréntesis, el segundo parámetro nos dice, según la msdn:&lt;br /&gt;0xC0000185, or STATUS_IO_DEVICE_ERROR, indicates improper termination or defective cabling on SCSI devices or that two devices are trying to use the same IRQ&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;No he encontrado más información acerca de los demás parámetros ya que no se diferencian bien los caracteres. Tampoco sabemos que sistema operativo usa la dichosa máquina.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2483286928073442970?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2483286928073442970/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2483286928073442970' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2483286928073442970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2483286928073442970'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/pantallazo-azul.html' title='Pantallazo azul'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x1HanhtyMG8/Snm8OoOiAbI/AAAAAAAAAFs/XeUOmDdt_AE/s72-c/ErrorCocaCola.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2122716323038029701</id><published>2009-08-03T13:24:00.005+02:00</published><updated>2009-08-03T13:57:54.552+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejecución diferida'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><category scheme='http://www.blogger.com/atom/ns#' term='ejecución inmediata'/><title type='text'>Ejecución Diferida  y Ejecución Inmediata (LINQ)</title><content type='html'>Esta es una de las bases de LINQ. ¿Pero qué significa ejecución diferida?&lt;br /&gt;Significa que al ejecutar una consulta LINQ, la totalidad de los resultados no se cargan en memoria, en su lugar los resultados se van cargando a medida que se evalúa la consulta. Esta es la ventaja principal, porque hace que ahorremos recursos.&lt;br /&gt;Por ejemplo, supongamos que tenemos una consulta que nos devuelve mil elementos, si sólo nos interesa el primer elemento y queremos descartar los demás, esos 999 elementos no se cargarán en memoria.&lt;br /&gt;Otra de las ventajas de la ejecución diferida es que nos permite reutilizar la consulta cuando queramos y las veces que lo necesitemos.&lt;br /&gt;&lt;br /&gt;Por otro lado tenemos la ejecución inmediata. ¿Qué significa?&lt;br /&gt;A veces por la naturaleza de nuestro programa necesitaremos que la consulta se ejecute completamente, antes de que se procesen los resultados (cómo ejemplo de ejecución inmediata tenéis el post que escribí el otro día Cargar RSS en un Datagridview, la última línea de código dgvRSS.DataSource = feeds.ToList();).&lt;br /&gt;El método de extensión ToList() es lo que fuerza la ejecución inmediata.&lt;br /&gt;&lt;br /&gt;Ejemplo de los dos casos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SnbQcxtfCuI/AAAAAAAAAFk/xwM8QvMpm2U/s1600-h/EjecucionDiferida.JPG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 213px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5365705198857554658" border="0" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SnbQcxtfCuI/AAAAAAAAAFk/xwM8QvMpm2U/s320/EjecucionDiferida.JPG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2122716323038029701?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2122716323038029701/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2122716323038029701' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2122716323038029701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2122716323038029701'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/ejecucion-diferida-y-ejecucion.html' title='Ejecución Diferida  y Ejecución Inmediata (LINQ)'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1HanhtyMG8/SnbQcxtfCuI/AAAAAAAAAFk/xwM8QvMpm2U/s72-c/EjecucionDiferida.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4226868700133735882</id><published>2009-08-01T22:59:00.005+02:00</published><updated>2009-08-01T23:36:45.625+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Operador is'/><category scheme='http://www.blogger.com/atom/ns#' term='rendimiento casting'/><category scheme='http://www.blogger.com/atom/ns#' term='Casting'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Operador as'/><title type='text'>Casting con los operadores "is" y "as" en C#</title><content type='html'>Estoy leyendo el libro CLR Via C# y quería compartir con vosotros algo que he visto y resulta interesante en cuanto a rendimiento en el código ;-)&lt;br /&gt;&lt;br /&gt;El operador "is" comprueba si un objeto es compatible con un tipo dado, y el resultado de la operación es un valor booleano (true o false). El operador "is" nunca provoca una excepción.&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;strong&gt;Object o = new Object();&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Boolean prueba = (o is Object);  //prueba es true&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Boolean prueba2 = (o is Persona);  //prueba2 es false&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Si la referencia al objeto es null, el operador "is" siempre devuelve el valor false, porque no hay un objeto disponible para verificar su tipo.&lt;br /&gt;El modo más común de usar el operador is:&lt;br /&gt;&lt;strong&gt;if (o is Persona)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;      Persona p = (Persona) o;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;     //...&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;El CLR según nuestra condición IF del ejemplo verificará el tipo de objeto 2 veces, primero comprobará si &lt;strong&gt;o&lt;/strong&gt; es compatible con el tipo &lt;strong&gt;Persona&lt;/strong&gt;. Si lo es, dentro del if, el CLR otra vez comprobará que &lt;strong&gt;o&lt;/strong&gt; referencia a una &lt;strong&gt;Persona&lt;/strong&gt; cuando haga el cast.&lt;br /&gt;El CLR nos proporciona seguridad, pero a costa de rendimiento, ya que el CLR determina el tipo actual del objeto referenciado por la variable &lt;strong&gt;o&lt;/strong&gt;, y luego el CLR recorre la jerarquía de herencia comprobando cada tipo base contra el tipo especificado (Persona).&lt;br /&gt;&lt;br /&gt;Aquí es dónde C# viene en nuestro rescate y nos ofrece el operador "as" para simplificarnos la vida y ganar en rendimiento:&lt;br /&gt;&lt;strong&gt;Persona p = o as Persona;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;if (p!=null)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;     //...&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;En este código el CLR comprueba si &lt;strong&gt;o&lt;/strong&gt; es compatible con el tipo &lt;strong&gt;Persona&lt;/strong&gt;, si lo es, "as" devuelve una referencia no nula al mismo objeto. Por contra si no es compatible, devuelve un valor null. La buena noticia, es que el operador "as" provoca que el CLR sólo tenga que comprobar el tipo de objeto una única vez.&lt;br /&gt;El operador "as" tampoco genera ninguna excepción, si el objeto no puede convertirse, simplemente devuelve un valor null. &lt;br /&gt;&lt;br /&gt;Eso es todo, voy a seguir escuchando MOS (Ministry of Sound, no penséis en Sharepoint frikis!!!) Trance Nation que ya es sábado sabadete ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4226868700133735882?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4226868700133735882/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4226868700133735882' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4226868700133735882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4226868700133735882'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/08/casting-con-los-operadores-is-y-as-en-c.html' title='Casting con los operadores &quot;is&quot; y &quot;as&quot; en C#'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7091934350614980621</id><published>2009-07-31T21:46:00.005+02:00</published><updated>2009-08-03T09:52:24.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='ejecutar lote varias veces'/><category scheme='http://www.blogger.com/atom/ns#' term='GO'/><category scheme='http://www.blogger.com/atom/ns#' term='ejecutar batch varias veces'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Recetas TSQL'/><title type='text'>Recetario T-SQL</title><content type='html'>Ejecución de un lote X veces. ¿Cómo lo conseguimos?&lt;br /&gt;Muy sencillo, a partir de SQL Server 2005, se introdujo la posibilidad de ejecutar un batch x veces mediante el comando GO X (siendo X el número de veces que queremos que se ejecute).&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;SELECT GETDATE() AS FechaActual&lt;br /&gt;GO 10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7091934350614980621?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7091934350614980621/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7091934350614980621' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7091934350614980621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7091934350614980621'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/07/recetario-t-sql_31.html' title='Recetario T-SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1374141642575670574</id><published>2009-07-31T19:45:00.003+02:00</published><updated>2009-07-31T20:11:11.811+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ to XML'/><title type='text'>Cargar RSS en un DataGridView con LINQ to XML</title><content type='html'>Vamos a cargar las rss de mi blog en un datagridview, para ello creamos una clase Feed tal como esta: &lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SnMyn86hsOI/AAAAAAAAAFM/VY6vBdu8Jb4/s1600-h/Feeds1.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5364687243076284642" border="0" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SnMyn86hsOI/AAAAAAAAAFM/VY6vBdu8Jb4/s320/Feeds1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Ahora el resultado de los feeds en una consulta sencillita en LINQ to XML la pasamos a nuestro datagridview:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SnMzDN8zXkI/AAAAAAAAAFU/cB8G3XRYe9Q/s1600-h/Feeds2.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 140px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5364687711505702466" border="0" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SnMzDN8zXkI/AAAAAAAAAFU/cB8G3XRYe9Q/s320/Feeds2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Y el resultado final lo vemos aquí: &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SnMzkJio_wI/AAAAAAAAAFc/toTgtJywDnA/s1600-h/Feeds3.jpg"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 226px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5364688277257912066" border="0" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SnMzkJio_wI/AAAAAAAAAFc/toTgtJywDnA/s320/Feeds3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1374141642575670574?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1374141642575670574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1374141642575670574' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1374141642575670574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1374141642575670574'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/07/cargar-rss-en-un-datagridview-con-linq.html' title='Cargar RSS en un DataGridView con LINQ to XML'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/SnMyn86hsOI/AAAAAAAAAFM/VY6vBdu8Jb4/s72-c/Feeds1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1533397008770674907</id><published>2009-07-14T16:57:00.005+02:00</published><updated>2009-07-14T17:17:52.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='CodePlex'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Simon'/><title type='text'>El juego SIMON</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SlydnszbzyI/AAAAAAAAAFE/9grqBTq6vhk/s1600-h/250px-Simon_game.jpg"&gt;&lt;img style="WIDTH: 250px; HEIGHT: 188px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5358330962031398690" border="0" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SlydnszbzyI/AAAAAAAAAFE/9grqBTq6vhk/s320/250px-Simon_game.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;¿Quién no ha jugado con este juego? Bueno seguro que la gente más joven no sepa ni lo que es, pero era un juego basado en la memoria visual y sonora. Personalmente adictivo (como para otros el cubo de Rubick), me lo regalaron de pequeño y siempre he guardado un grato recuerdo del juego.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;El juego consiste en visualizar una secuencia de colores (aleatorios) y luego repetirlos. Cada vez que acertemos la secuencia, empezará otra más difícil y así sucesivamente hasta que fallemos.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;El motivo del post, es que he encontrado en CodePlex este juego hecho en WPF, Silverlight (2 y 3) y Surface. Te lo puedes descargar desde aquí:&lt;/div&gt;&lt;div&gt;&lt;a href="http://simon.codeplex.com/"&gt;http://simon.codeplex.com/&lt;/a&gt; (sección downloads)&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Lo mejor de todo es que viene con sus fuentes y así puedes disfrutar doblemente, una con el juego y otra con el código.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El autor del juego es David J Kelley (&lt;a href="http://hackingsilverlight.blogspot.com/"&gt;http://hackingsilverlight.blogspot.com/&lt;/a&gt; o bien &lt;a href="http://www.hackingsilverlight.net/"&gt;http://www.hackingsilverlight.net/&lt;/a&gt; (para poder acceder a esta página necesitas tener instalado Silverlight 3).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1533397008770674907?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1533397008770674907/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1533397008770674907' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1533397008770674907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1533397008770674907'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/07/el-juego-simon.html' title='El juego SIMON'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x1HanhtyMG8/SlydnszbzyI/AAAAAAAAAFE/9grqBTq6vhk/s72-c/250px-Simon_game.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2340057896102896104</id><published>2009-07-11T18:33:00.005+02:00</published><updated>2009-07-11T18:50:36.875+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='undocumented stored procedures'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='sp_MSforeachtable'/><title type='text'>Recetario T-SQL</title><content type='html'>Este es un SP (procedimiento almacenado o stored procedure en el idioma de Shakespeare) no documentado por los BOL de SQL Server, pero que puede ser de gran utilidad a la hora de eliminar todos los datos de nuestras tablas, etc.&lt;br /&gt;&lt;br /&gt;exec sp_MSforeachtable 'TRUNCATE TABLE ?'&lt;br /&gt;&lt;br /&gt;Otra utilidad menos maligna es usar este SP para obtener todos los nombres de nuestras tablas, y por ejemplo almacenarlas en una tabla temporal para luego ... (lo dejo abierto a la imaginación de cada uno y la utilidad que quiera darle). Así nos evitamos los puñeteros cursores xDDD&lt;br /&gt;&lt;br /&gt;exec sp_MSforeachtable 'SELECT "?" AS Tabla'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2340057896102896104?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2340057896102896104/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2340057896102896104' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2340057896102896104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2340057896102896104'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/07/recetario-t-sql.html' title='Recetario T-SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3096722991881992577</id><published>2009-07-11T17:05:00.001+02:00</published><updated>2009-07-11T17:07:41.696+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server configuracion'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server configuration'/><title type='text'>Configuración básica de SQL Server a nivel de OS</title><content type='html'>A nivel de sistema operativo es importante realizar la siguiente comprobación:&lt;br /&gt;&lt;br /&gt;1.- Click con el botón derecho en MiPC y seleccionamos Propiedades, luego seleccionamos la pestaña de Opciones Avanzadas, en esta pestaña hacemos click en el botón Configuración de la opción Rendimiento. La opción que debemos seleccionar es Ajustar para el mejor rendimiento de: Servicios en segundo plano.&lt;br /&gt;&lt;br /&gt;2.- Si es posible, lo mejor es situar el archivo de paginación del sistema en una unidad diferente a la de las BD de SQL Server.&lt;br /&gt;&lt;br /&gt;3.- Servicios de Windows no necesarios, tendremos que parar aquellos servicios que no nos hagan falta. Aquellos servicios necesarios los configuraremos de manera que se arranquen automáticamente.&lt;br /&gt;&lt;br /&gt;4.- Conectividad, sólo usaremos los protocolos que necesitemos para conectar con SQL Server. Para deshabilitar los no necesarios lo haremos a través del Configuration Manager de SQL Server.&lt;br /&gt;&lt;br /&gt;5.- Firewall, es muy importante configurarlo adecuadamente para que podamos conectar con SQL Server sin problemas. Si tenemos configurado SQL Server de forma que la conexión con los puertos sea aleatoria, lo mejor es añadir una excepción en el firewall que incluya el ejecutable Sqlserv.exe y Sqlbrowser.exe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3096722991881992577?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3096722991881992577/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3096722991881992577' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3096722991881992577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3096722991881992577'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/07/configuracion-basica-de-sql-server.html' title='Configuración básica de SQL Server a nivel de OS'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2095178045140910162</id><published>2009-06-20T18:17:00.000+02:00</published><updated>2009-06-20T18:31:46.445+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deep Zoom Composer'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Deep Zoom Composer</title><content type='html'>Ayer se publicó una nueva versión de Deep Zoom Composer June 2009 Preview, antes de instalar esta nueva versión es recomendable desinstalar la versión anterior en caso de tenerla en nuestro equipo.&lt;br /&gt;&lt;br /&gt;Novedades significativas que incorpora son:&lt;br /&gt;-Soporte para navegación, se podrá navegar entre imágenes, o en áreas de imágenes.&lt;br /&gt;-Mejor uso de la memoria, ahora consume menos recursos, lo que se traduce en poder trabajar con más imágenes.&lt;br /&gt;-Importar imágenes y exportarlas sin tener que pasar previamente por el área de diseño.&lt;br /&gt;-Reporting de imágenes que acaparan más atención.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2095178045140910162?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2095178045140910162/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2095178045140910162' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2095178045140910162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2095178045140910162'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/06/deep-zoom-composer.html' title='Deep Zoom Composer'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8498126757022960133</id><published>2009-06-14T12:52:00.000+02:00</published><updated>2009-06-14T13:11:31.575+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 14'/><title type='text'>OFFICE 2010 (Office 14)</title><content type='html'>El próximo mes de Julio expirará la CTP de Office 2010. Los requerimientos para poder usar la nueva versión de office: (según el blog de office2010)&lt;br /&gt;1.- Funcionará en plataformas 32 y 64 bits.&lt;br /&gt;2.- Correrá en Windows XP SP3, Windows Vista y Windows 7&lt;br /&gt;3.- No hace falta actualizar el hardware de la máquina, si tu equipo puede con Office 2007 también podrá mover la versión 2010.&lt;br /&gt;&lt;br /&gt;En este enlace podremos seguir las evoluciones de la nueva suite:&lt;br /&gt;&lt;a href="http://www.office2010themovie.com/"&gt;www.office2010themovie.com&lt;/a&gt;&lt;br /&gt;así como en este blog:&lt;br /&gt;&lt;a href="http://blogs.technet.com/office2010/"&gt;http://blogs.technet.com/office2010/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Así que ya tenemos a Microsoft a tope preparando las presentaciones, me imagino que conjuntamente con Windows 7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8498126757022960133?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8498126757022960133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8498126757022960133' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8498126757022960133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8498126757022960133'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/06/office-2010-office-14.html' title='OFFICE 2010 (Office 14)'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6368531939363382838</id><published>2009-04-08T16:04:00.000+02:00</published><updated>2009-04-08T16:06:52.977+02:00</updated><title type='text'>SQL Server 2008 SP1</title><content type='html'>Pues otra noticia del día. Han publicado el primer Service Pack para SQL Server 2008. El enlace lo tenéis aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6368531939363382838?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6368531939363382838/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6368531939363382838' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6368531939363382838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6368531939363382838'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/04/sql-server-2008-sp1.html' title='SQL Server 2008 SP1'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5653891859160322265</id><published>2009-04-08T16:02:00.001+02:00</published><updated>2009-04-08T16:04:42.812+02:00</updated><title type='text'>Por fin</title><content type='html'>Ha llegado a mis manos el libro de SQL Server 2008 Internals, ya empezaba a impacientarme porque los de Amazon me decían que no lo habían recibido y tampoco sabían cuando tendrían existencias disponibles.&lt;br /&gt;Por lo menos la espera ha valido la pena ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5653891859160322265?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5653891859160322265/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5653891859160322265' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5653891859160322265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5653891859160322265'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/04/por-fin.html' title='Por fin'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5058506923031363154</id><published>2009-02-02T15:59:00.000+01:00</published><updated>2009-02-02T16:33:58.627+01:00</updated><title type='text'>Microsoft SQL Server 2008 Internals</title><content type='html'>&lt;div&gt;Marcad en vuestro calendario la fecha de publicación de un libro MH (Must Have). Yo lo tengo pedido en Amazon y lo espero con impaciencia.&lt;br /&gt;La fecha en cuestión es el día 18 de Febrero, el precio es de 59.99$, si lo compras por Amazon se queda en 37.79$ más gastos de envío.&lt;br /&gt;Sus autores son: &lt;strong&gt;Kalen Delaney, Paul S. Randal, Kimberly L. Tripp (vaya trío)&lt;/strong&gt;, Conor Cunningham, Adam Machanic, y Ben Nevarez.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SYcR32EZKSI/AAAAAAAAAE8/C-tjQdZiiNM/s1600-h/SQLServerInternals.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5298223137729095970" style="WIDTH: 131px; CURSOR: hand; HEIGHT: 160px" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SYcR32EZKSI/AAAAAAAAAE8/C-tjQdZiiNM/s320/SQLServerInternals.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5058506923031363154?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5058506923031363154/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5058506923031363154' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5058506923031363154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5058506923031363154'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/02/microsoft-sql-server-2008-internals.html' title='Microsoft SQL Server 2008 Internals'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/SYcR32EZKSI/AAAAAAAAAE8/C-tjQdZiiNM/s72-c/SQLServerInternals.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1554384172024993638</id><published>2009-02-02T15:48:00.000+01:00</published><updated>2009-02-02T15:58:14.135+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBCC CHECKDB'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Ejecutando DBCC CHECKDB de manera correcta</title><content type='html'>Hola a &lt;a href="mailto:tod@s"&gt;tod@s&lt;/a&gt;, hoy no voy a extenderme mucho y el post será breve. Al lío: la manera correcta de buscar los errores e incoherencias en nuestras BD es la siguiente:&lt;br /&gt;&lt;br /&gt;DBCC CHECKDB (miBD) WITH NO_INFOMSGS, ALL_ERRORMSGS;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;¿Por qué?, básicamente porque si no especificamos ningún parámetro DBCC CHECKDB sólo nos muestra los 200 primeros errores que encuentra, en el caso de tener más ... : P tú te lo pierdes.&lt;br /&gt;&lt;br /&gt;Y además con el parámetro NO_INFOMSGS estamos eliminando la morralla de lo realmente interesante.&lt;br /&gt;&lt;br /&gt;Observaciones: según la documentación de los BOL, el SP3 de SQL Server 2005 hace que al ejecutar la instrucción DBCC CHECKDB esta por defecto ejecute el parámetro ALL_ERRORMSGS sin necesidad de especificarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1554384172024993638?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1554384172024993638/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1554384172024993638' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1554384172024993638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1554384172024993638'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/02/ejecutando-dbcc-checkdb-de-manera.html' title='Ejecutando DBCC CHECKDB de manera correcta'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-480198157124641379</id><published>2009-01-28T10:49:00.000+01:00</published><updated>2009-01-28T10:53:09.789+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUSENET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 2.0 Day</title><content type='html'>Fecha: Viernes 30 de Enero&lt;br /&gt;Lugar: Clave Informatica (Elche – Alicante)&lt;br /&gt;Titulo: Silverlight 2.0 Day (by José Luís Latorre MVP ASP/&lt;a href="http://asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt;, especializado en las tecnologías cliente: WPF, Silverlight y &lt;a href="http://asp.net/" target="_blank"&gt;ASP.NET&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;16:00 - 16:30  Registro16:30 - 17:45  Introducción a Silverlight 2.0&lt;br /&gt;17:45 - 18:15  Descanso18:15 - 19:30  Técnicas de layout y best practices&lt;br /&gt;&lt;br /&gt;Link de registro: &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032403239&amp;amp;Culture=es-ES" target="_blank"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032403239&amp;amp;Culture=es-ES&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Allí nos veremos xD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-480198157124641379?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/480198157124641379/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=480198157124641379' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/480198157124641379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/480198157124641379'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/01/silverlight-20-day.html' title='Silverlight 2.0 Day'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2452582357161888060</id><published>2009-01-28T10:43:00.000+01:00</published><updated>2009-01-28T10:48:57.151+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Profiler'/><title type='text'>Mastering SQL Server Profiler</title><content type='html'>Vía SQLServerCentral y RedGate nos llega este e-book en descarga gratuita. La verdad es que tiene buena pinta y debería ser de lectura recomendada para entender el funcionamiento del Profiler y sacarle el máximo provecho.&lt;br /&gt;Os dejo el link para la descarga (no se durante cuanto tiempo estará activo):&lt;br /&gt;&lt;a href="http://www.red-gate.com/products/SQL_Response/offers/mastering_sql_profiler_ebook.htm?utm_source=ssc&amp;amp;utm_medium=email&amp;amp;utm_content=profiler20090128&amp;amp;utm_campaign=sqlresponse"&gt;http://www.red-gate.com/products/SQL_Response/offers/mastering_sql_profiler_ebook.htm?utm_source=ssc&amp;amp;utm_medium=email&amp;amp;utm_content=profiler20090128&amp;amp;utm_campaign=sqlresponse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2452582357161888060?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2452582357161888060/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2452582357161888060' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2452582357161888060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2452582357161888060'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/01/mastering-sql-server-profiler.html' title='Mastering SQL Server Profiler'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-9097930612250863798</id><published>2009-01-13T15:47:00.000+01:00</published><updated>2009-01-13T15:55:24.750+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='SmoExtended'/><title type='text'>Cambios en librerías SMO con SQL Server 2008</title><content type='html'>Si tenéis que actualizar en algún proyecto vuestras dll relativas a SMO para adecuarlas a vuestro servidor con SQL Server 2008, es conveniente que sepáis que el objeto Backup que antes se encontraba en Microsoft.SqlServer.Smo.dll ahora se encuentra en Microsoft.SqlServer.SmoExtended.dll&lt;br /&gt;&lt;br /&gt;La ruta para agregar esta nueva librería (dependerá de dónde tengáis instalado SQL Server), es la siguiente:&lt;br /&gt;C:\Archivos de programa\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-9097930612250863798?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/9097930612250863798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=9097930612250863798' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/9097930612250863798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/9097930612250863798'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/01/cambios-en-libreras-smo-con-sql-server.html' title='Cambios en librerías SMO con SQL Server 2008'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6784765573483721092</id><published>2009-01-06T17:04:00.000+01:00</published><updated>2009-01-06T17:10:46.191+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Recetas TSQL'/><title type='text'>Recetario T-SQL</title><content type='html'>--Devolver todas las columnas de una tabla concreta separadas por comas&lt;br /&gt;DECLARE @Columnas varchar(4000)&lt;br /&gt;SET @Columnas=''&lt;br /&gt;&lt;br /&gt;SELECT @Columnas=@Columnas+sc.name+',' FROM sys.columns AS sc INNER JOIN sys.tables AS st ON&lt;br /&gt;sc.object_id=st.object_id&lt;br /&gt;WHERE st.name='Cliente'&lt;br /&gt;ORDER BY sc.column_id&lt;br /&gt;&lt;br /&gt;SELECT @Columnas&lt;br /&gt;&lt;br /&gt;De esta manera conseguiremos que el resultado se devuelva de esta forma:&lt;br /&gt;IDCliente, Dni, Nombre, Apellidos, Dirección, ...&lt;br /&gt;&lt;br /&gt;Esta receta nos puede ser de mucha utilidad si la tabla en cuestión tiene muchas columnas y nos supone una pérdida de tiempo el tener que teclearlas todas :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6784765573483721092?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6784765573483721092/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6784765573483721092' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6784765573483721092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6784765573483721092'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2009/01/recetario-t-sql.html' title='Recetario T-SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6461525790572758615</id><published>2008-12-31T19:46:00.000+01:00</published><updated>2008-12-31T19:50:42.375+01:00</updated><title type='text'>The last post (de este año).</title><content type='html'>Y el año que viene muchos más, si me dejan xD.&lt;br /&gt;&lt;br /&gt;Feliz año nuevo a todos, y nos seguiremos leyendo por el ciberespacio.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6461525790572758615?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6461525790572758615/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6461525790572758615' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6461525790572758615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6461525790572758615'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/12/last-post-de-este-ao.html' title='The last post (de este año).'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4029210111914465773</id><published>2008-12-29T14:12:00.000+01:00</published><updated>2008-12-29T14:16:29.546+01:00</updated><title type='text'>Un poco de propaganda a JDW</title><content type='html'>Simplemente quería darle un poco de publicidad a una web de unos amigos que quieren comenzar su andadura en el mundo de la informática, prestando sus servicios de forma profesional, en diversas áreas (web, diseño y mantenimiento). Pero bueno mejor os pásais vosotros mismos por la web.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jadaweb.es/"&gt;http://www.jadaweb.es&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4029210111914465773?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4029210111914465773/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4029210111914465773' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4029210111914465773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4029210111914465773'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/12/un-poco-de-propaganda-jdw.html' title='Un poco de propaganda a JDW'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3143308610283458938</id><published>2008-11-28T19:15:00.001+01:00</published><updated>2008-11-28T19:22:30.379+01:00</updated><title type='text'>IV Aniversario GUSENET</title><content type='html'>Mañana asistiré a las charlas programadas en el IV Aniversario del grupo GUSENET (www.gusenet.com). ¡Cómo pasa el tiempo! La verdad es que hace 4 días recuerdo estar en Sta. Pola celebrando el III Aniversario y conociendo a gente maravillosa y dispuesta a ayudar a los demás.&lt;br /&gt;&lt;br /&gt;En la web del grupo podréis ver el programa de mañana.&lt;br /&gt;&lt;br /&gt;Desde aquí quiero animar a la gente que no conoce el grupo a que acuda a disfrutar tanto de las charlas cómo de la gente que compone el grupo, a exponer sus dudas y a participar en los diferentes eventos que se programan mes tras mes.&lt;br /&gt;Hace poco disfrutamos de dos integrantes del equipo de programación de Visual Basic venidos desde Redmond.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3143308610283458938?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3143308610283458938/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3143308610283458938' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3143308610283458938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3143308610283458938'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/11/iv-aniversario-gusenet.html' title='IV Aniversario GUSENET'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-966975389120135541</id><published>2008-11-28T19:06:00.000+01:00</published><updated>2008-11-28T19:14:57.771+01:00</updated><title type='text'>Novedades SQL Server 2005 y 2008</title><content type='html'>Bueno después de estar un tiempo desconectado, he dado un vistazo a las novedades que me he perdido de SQL Server. Para empezar, comentaros que en Septiembre se publicó un CU1 (Cummulative Update) para SQL Server 2008 y hace pocos días se ha publicado un segundo CU2, más en concreto el día 18 de Noviembre (si queréis ver lo que corrige lo podéis ver en http://support.microsoft.com/kb/958186/en-us), recordad que para descargarlo es bajo demanda.&lt;br /&gt;&lt;br /&gt;Por otro lado se ha publicado el tan aclamado SP3 para SQL Server 2005 pero en estado BETA, sólo para testeo (se hizo el día 28 de Octubre, sí ya ha llovido desde entonces jejeje, es lo que tiene no estar al día de las cosas, y pensar más en los videojuegos).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-966975389120135541?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/966975389120135541/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=966975389120135541' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/966975389120135541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/966975389120135541'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/11/novedades-sql-server-2005-y-2008.html' title='Novedades SQL Server 2005 y 2008'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5412130747921507681</id><published>2008-11-08T16:25:00.000+01:00</published><updated>2008-11-08T16:37:38.875+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ConnectionUI'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='DataConnectionDialog'/><title type='text'>Interfaz de conexión contra una BD C#</title><content type='html'>Buscando y buscando di el otro día con la interfaz de conexión que utiliza Visual Studio para conectarnos a una BD. Os dejo un ejemplo de cómo implementarlo en un proyecto.&lt;br /&gt;&lt;br /&gt;Para poder utilizar esta interfaz necesitamos agregar a nuestro proyecto un par de referencias que tenemos localizadas en el directorio de instalación de Visual Studio bajo la carpeta:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Mi&lt;strong&gt;crosoft Visual Studio 9.0\Common7\IDE\Microsoft.Data.ConnectionUI.Dialog.dll&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Microsoft Visual Studio 9.0\Common7\IDE\Microsoft.Data.ConnectionUI.dll&lt;/strong&gt;&lt;br /&gt;(En este caso para VS2008, en VS2005 también está disponible en su lugar será 8.0 ;P)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez añadidas las referencias necesitamos importarlas mediante:&lt;br /&gt;using Microsoft.Data.ConnectionUI;&lt;br /&gt;&lt;br /&gt;Y por último para utilizarlas en nuestro proyecto:&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Microsoft.Data.ConnectionUI.DataConnectionDialog dialogo = new Microsoft.Data.ConnectionUI.DataConnectionDialog();&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;//Añado por defecto las conexiones estándar, podemos seleccionar o limitar el tipo de conexión que mostrará la ventana de conexión.&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dialogo);&lt;br /&gt;Microsoft.Data.ConnectionUI.DataConnectionDialog.Show(dialogo);&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Si queremos obtener la cadena de conexión resultante de los datos introducidos en la ventana de conexión es tan simple cómo asignar a una cadena el resultado de:&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;dialogo.ConnectionString&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5412130747921507681?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5412130747921507681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5412130747921507681' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5412130747921507681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5412130747921507681'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/11/interfaz-de-conexin-contra-una-bd-c.html' title='Interfaz de conexión contra una BD C#'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5307128487013445035</id><published>2008-11-08T16:13:00.000+01:00</published><updated>2008-11-08T16:24:23.682+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='cortafuegos'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Configurando el Firewall de Windows para SQL Server</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;El tema de hoy es facilón, pero seguro que a muchos y no quiero dar nombres les ha dado más de una vez un dolor de cabeza. Al grano.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Lo primero que tenemos que hacer es mostrar la ventana dónde configurar las exclusiones del firewall.Para ello, nos vamos a inicio, ejecutar y escribimos firewall.cpl, abrirá la siguiente ventana:&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWtPqWmHUI/AAAAAAAAADg/_o4N9y0hl88/s1600-h/ConfigFirewall.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5266305823858367810" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 256px" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWtPqWmHUI/AAAAAAAAADg/_o4N9y0hl88/s320/ConfigFirewall.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Pinchamos en cambiar la configuración y veremos la siguiente ventana:&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SRWtvKtL08I/AAAAAAAAADo/SV99c9TCVTY/s1600-h/Firewall1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5266306365118993346" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 259px" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SRWtvKtL08I/AAAAAAAAADo/SV99c9TCVTY/s320/Firewall1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Ahora añadiremos las excepciones, para ello hacemos click en el TAB Excepciones.Pulsamos en el botón Agregar un puerto y en la venta rellenaremos los campos Nombre con el valorSQL Server y el campo Número de puerto con el valor 1433. En la opción de protocolo seleccionaremosTCP.&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWt58s96lI/AAAAAAAAADw/YQZ-TLfzbHc/s1600-h/Firewall2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5266306550338546258" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 259px" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWt58s96lI/AAAAAAAAADw/YQZ-TLfzbHc/s320/Firewall2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;También podemos abrir un puerto que escuche al servicio SQL Server Browser. Puede que te preguntespara qué sirve este servicio, pues sirve para que nos podamos conectar a nuestra instancia de SQL Serversi esta no está escuchando en el puerto 1433.Para configurarlo volveremos a agregar un puerto tal y como hemos hecho antes. La descripción seráSQL Server Browser, en el puerto 1434 de tipo UDP.&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWurhIyXVI/AAAAAAAAAEA/vOre8BIP5U8/s1600-h/Firewall3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5266307401932496210" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 259px" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SRWurhIyXVI/AAAAAAAAAEA/vOre8BIP5U8/s320/Firewall3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;-Una alternativa a configurar una instancia con nombre para escuchar en un puerto fijo es crear una excepción en el firewall para el ejecutable de SQL Server, lo que nos permitirá conectar a él independientemente del puerto que tenga abiertopara escucha. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Ruta en mi equipo dónde se encuentra el ejecutable de SQL Server 2005&lt;/div&gt;&lt;div&gt;C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;SQL Server 2008&lt;/div&gt;&lt;div&gt;C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;En ambos casos elegiremos el fichero ejecutable sqlservr.exe&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Si queréis profundizar un poco más en la configuración del firewall para Analisys Services, ...os dejo los enlaces en los BOL, para SQL Server 2008:&lt;/div&gt;&lt;div&gt;2008 ==&gt; ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.es/s10sq_GetStart/html/f55c6a0e-b6bd-4803-b51a-f3a419803024.htm&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5307128487013445035?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5307128487013445035/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5307128487013445035' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5307128487013445035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5307128487013445035'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/11/configurando-el-firewall-de-windows.html' title='Configurando el Firewall de Windows para SQL Server'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x1HanhtyMG8/SRWtPqWmHUI/AAAAAAAAADg/_o4N9y0hl88/s72-c/ConfigFirewall.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3408488328787398451</id><published>2008-09-22T20:11:00.000+02:00</published><updated>2008-09-22T21:25:09.507+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='error en índice nonclustered'/><category scheme='http://www.blogger.com/atom/ns#' term='nonclustered index error'/><category scheme='http://www.blogger.com/atom/ns#' term='In data row error'/><title type='text'>Corrompiendo una BD (parte I) y solucionando el error</title><content type='html'>Herramientas que necesitamos:&lt;br /&gt;-SQL Server 2005 (en SQL Server 2008 todavía no lo he probado).&lt;br /&gt;-Heditor hexadecimal (en mi caso utilizo XVI32, es freeware)&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;El error que os voy a describir es de fácil solución, puesto que vamos a corromper un índice nonclustered, pero puede serviros a la hora de practicar posibles soluciones a un error y posiblemente para alguna cosilla más xDDD.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Lo primero de todo es crearos una BD, en mi caso la he llamado Corrupta, estableciendo sobre ella que no verifique ningún error a nivel de página (ALTER DATABASE Corrupta SET PAGE_VERIFY NONE), y después nos creamos una tabla X sobre la que crearemos un índice nonclustered único. A continuación introducimos una serie de registros, en nuestro caso 9 registros.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SNfjwObJq9I/AAAAAAAAACQ/mBaT2u7y7Sg/s1600-h/Corrupta2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5248914308368804818" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SNfjwObJq9I/AAAAAAAAACQ/mBaT2u7y7Sg/s320/Corrupta2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora veamos, ¿qué es lo que necesitamos? (empezar por algún lado).&lt;br /&gt;Necesitamos saber la página dónde está nuestro índice nonclustered, ¿cómo podemos obtenerla?&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SNfj9C-jK4I/AAAAAAAAACY/VsPrmcqU0no/s1600-h/Corrupta1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5248914528634350466" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SNfj9C-jK4I/AAAAAAAAACY/VsPrmcqU0no/s320/Corrupta1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;si os fijáis en los recuadros en rojo (ese pulso). Veréis que os indico el id del índice (tipo 2 significa nonclustered) y la dirección de la primera página donde se aloja.&lt;br /&gt;Ahora bien, rebuscando un poco he encontrado que Kalen Delaney's tiene una función mediante la cual podemos transformar una dirección hexadecimal en una página:&lt;br /&gt;&lt;br /&gt;create function [dbo].[convert_page_nums] (@page_num binary(6))&lt;br /&gt;RETURNS varchar(11)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;RETURN(convert(varchar(2), (convert(int, substring(@page_num, 6, 1)) * power(2, 8)) +&lt;br /&gt;(convert(int, substring(@page_num, 5, 1)))) + ':' +&lt;br /&gt;convert(varchar(11),&lt;br /&gt;(convert(int, substring(@page_num, 4, 1)) * power(2, 24)) +&lt;br /&gt;(convert(int, substring(@page_num, 3, 1)) * power(2, 16)) +&lt;br /&gt;(convert(int, substring(@page_num, 2, 1)) * power(2, 8)) +&lt;br /&gt;(convert(int, substring(@page_num, 1, 1)))) )&lt;br /&gt;END&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;La utilizaremos para convertir nuestra dirección en algo más entendible&lt;br /&gt;SELECT dbo.convert_page_nums(0x7E0000000100) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;que nos da como resultado en mi caso la página (1:126)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para comprobar que es correcto podemos ejecutar&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DBCC IND(Corrupta, Datos, -1) (esta instrucción no está documentada en los BOL, podéis encontrar info en el blog de sqlserverstorageengine)&lt;/div&gt;&lt;div&gt;que nos muestra como resultado lo siguiente:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SNfoO4yVGII/AAAAAAAAACg/0Pjd7Alnp_A/s1600-h/Corrupta3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5248919233182898306" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SNfoO4yVGII/AAAAAAAAACg/0Pjd7Alnp_A/s320/Corrupta3.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;os remarco en rojo la información relevante, la página, el id del índice y el tipo de página.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Después de toda la información que hemos recabado tenemos que hacer un volcado de los datos que contiene esa página, ¿cómo? (sigue leyendo que esto se pone interesante)&lt;br /&gt;Primero activamos la visualización del DBCC PAGE en pantalla mediante:&lt;br /&gt;DBCC TRACEON(3604, -1)&lt;br /&gt;GO&lt;br /&gt;Y después obtenemos el volcado de los datos de la página&lt;br /&gt;DBCC PAGE(Corrupta, 1, 126, 1)&lt;br /&gt;Una vez tenemos los datos nos tenemos que fijar en el Slot 0, que nos indica la primera fila en la página, y en el Slot 8 que nos indica la última página.&lt;br /&gt;&lt;br /&gt;Slot 0, Offset 0x60, Length 14, DumpStyle BYTE&lt;br /&gt;Record Type = INDEX_RECORD Record Attributes =&lt;br /&gt;Memory Dump @0x4E85C060&lt;br /&gt;00000000: 06312020 20205a00 00000100 0000††††††.1 Z.......&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Slot 8, Offset 0xd0, Length 14, DumpStyle BYTE&lt;br /&gt;Record Type = INDEX_RECORD Record Attributes =&lt;br /&gt;Memory Dump @0x4E85C0D0&lt;br /&gt;00000000: 06392020 20205a00 00000100 0800††††††.9 Z....... &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Una vez tenemos estos datos es hora de parar nuestro instancia de SQL Server y abrir en el editor hexadecimal el fichero Corrupta.mdf, acto seguido buscaremos la primera aparición de la cadena hexadecimal 06312020 20205a00 00000100 0000&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SNfrPBoBYhI/AAAAAAAAACo/RD5cM1dlp8Y/s1600-h/Corrupta4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5248922534090465810" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SNfrPBoBYhI/AAAAAAAAACo/RD5cM1dlp8Y/s320/Corrupta4.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Ahora cambiaremos los datos por el valor 00 y guardaremos el fichero.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SNfrh9nnJAI/AAAAAAAAACw/dIpmh8eeZXM/s1600-h/Corrupta5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5248922859432518658" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SNfrh9nnJAI/AAAAAAAAACw/dIpmh8eeZXM/s320/Corrupta5.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;podría haber continuado hasta el último slot pero es un coñazo con este editor o todavía no lo domino lo suficiente (xDDD).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Volvemos a iniciar nuestra instancia y ejecutamos una comprobación de la BD&lt;br /&gt;DBCC CHECKDB('Corrupta') que nos muestra el siguiente resultado:&lt;br /&gt;&lt;br /&gt;Resultados de DBCC para 'Datos'.&lt;br /&gt;Mens. 8928, Nivel 16, Estado 1, Línea 1&lt;br /&gt;Id. de objeto 5575058, Id. de índice 2, Id. de partición 72057594038845440, Id. de unidad de asignación 72057594043957248 (tipo In-row data): no se pudo procesar la página (1:126). Vea otros errores para obtener información detallada.&lt;br /&gt;Mens. 8941, Nivel 16, Estado 55, Línea 1&lt;br /&gt;Error de tabla: Id. de objeto 5575058, Id. de índice 2, Id. de partición 72057594038845440, Id. de unidad de asignación 72057594043957248 (tipo In-row data), página (1:126). Error de prueba (dbccAuditRecSucceeded == TRUE). Zona 0, el desplazamiento 0x60 no es válido.&lt;br /&gt;Hay 9 filas in 1 páginas para el objeto "Datos".&lt;br /&gt;CHECKDB detectó 0 errores de asignación y 2 errores de coherencia en la tabla 'Datos'. (Id. de objeto 5575058).&lt;/div&gt;&lt;br /&gt;Y al final de todo:&lt;br /&gt;CHECKDB detectó 0 errores de asignación y 2 errores de coherencia en la base de datos 'Corrupta'.&lt;br /&gt;repair_allow_data_loss es el nivel mínimo de reparación para los errores detectados por DBCC CHECKDB (Corrupta).&lt;br /&gt;Ejecución de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;¿Bien y ahora qué? la reparamos mediante un REPAIR_REBUILD, REPAIR_ALLOW_DATA_LOSS, restauramos una copia de seguridad.&lt;br /&gt;Lo primero que podríamos hacer es verificar el objeto que tiene el error y para eso lo podemos hacer de la siguiente manera:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;SELECT object_name(object_id)AS 'Table',name,index_id,type_desc FROM sys.indexes&lt;br /&gt;WHERE object_id = '5575058'&lt;br /&gt;AND index_id = 2&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;que nos devuelve los siguientes datos:&lt;/div&gt;&lt;div&gt;Table name index_id type_desc&lt;/div&gt;&lt;div&gt;--------------------------------------------------&lt;/div&gt;&lt;div&gt;Datos SK_Datos 2 NONCLUSTERED&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Yuhu, es un índice nonclustered (que novedad si no fuera porque os lo he dicho y lo hemos creado :-)), lo mejor de todo es que al ser nonclustered podremos reconstruirlo mediante la sentencia&lt;br /&gt;&lt;br /&gt;ALTER INDEX SK_Datos ON dbo.Datos REBUILD&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Una vez hecho esto volvemos a ejecutar un DBCC CHECKDB('Corrupta')&lt;/div&gt;&lt;div&gt;&lt;br /&gt;CHECKDB detectó 0 errores de asignación y 0 errores de coherencia en la base de datos 'Corrupta'.&lt;br /&gt;Ejecución de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;y voilà los errores de consistencia han desaparecido, nos hemos quitado un marrón (dolor de cabeza, o como lo quieras llamar) de encima y nos quedamos satisfechos de nuestro trabajo realizado.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Bueno eso es todo amigos, espero os guste y os sirva para salir de un apuro. Saludos y hasta pronto. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3408488328787398451?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3408488328787398451/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3408488328787398451' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3408488328787398451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3408488328787398451'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/corrompiendo-una-bd-parte-i-y.html' title='Corrompiendo una BD (parte I) y solucionando el error'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1HanhtyMG8/SNfjwObJq9I/AAAAAAAAACQ/mBaT2u7y7Sg/s72-c/Corrupta2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5789783334614182472</id><published>2008-09-22T19:51:00.000+02:00</published><updated>2008-09-22T19:56:54.514+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='io_stall'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='sys.dm_io_virtual_file_stats'/><title type='text'>BD's con más consumo de I/O</title><content type='html'>--Bases de datos que utilizan más I/O&lt;br /&gt;--BD, Tipo de fichero, IO en megas, IO Stall en segundos (tiempo de espera para lectura o escritura), Porcentaje de IO stall, Posición de más a menos IO Stall (Ranking)&lt;br /&gt;&lt;br /&gt;WITH Consumo AS&lt;br /&gt;(&lt;br /&gt;SELECT  DB_NAME(IV.database_id) AS db,  CASE WHEN MF.type = 1 THEN 'log' ELSE 'data' END AS file_type,  SUM(IV.num_of_bytes_read + IV.num_of_bytes_written) AS io,  SUM(IV.io_stall) AS io_stall&lt;br /&gt;FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS IV  JOIN sys.master_files AS MF  ON IV.database_id = MF.database_id  AND IV.file_id = MF.file_id&lt;br /&gt;GROUP BY DB_NAME(IV.database_id), MF.type&lt;br /&gt;)&lt;br /&gt;--si no queremos verlo en segundos podemos modificar el io_stall /1000 para verlo en milisegundos, etc&lt;br /&gt;SELECT db, file_type, CAST(1. * io / (1024 * 1024) AS DECIMAL(12, 2)) AS io_mb, CAST(io_stall / 1000. AS DECIMAL(12, 2)) AS io_stall_s, CAST(100. * io_stall / SUM(io_stall) OVER() AS DECIMAL(10, 2)) AS io_stall_pct, ROW_NUMBER() OVER(ORDER BY io_stall DESC) AS rnk&lt;br /&gt;FROM Consumo&lt;br /&gt;ORDER BY io_stall DESC;&lt;br /&gt;&lt;br /&gt;Avisaros que en SQL 2000 no os funcionará ya que utiliza DMV de SQL Server 2005&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5789783334614182472?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5789783334614182472/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5789783334614182472' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5789783334614182472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5789783334614182472'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/bds-con-ms-consumo-de-io.html' title='BD&apos;s con más consumo de I/O'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7801676363814832850</id><published>2008-09-20T14:32:00.000+02:00</published><updated>2008-09-20T14:34:19.539+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008 Pricing'/><category scheme='http://www.blogger.com/atom/ns#' term='Precio Licencias SQL Server 2008'/><title type='text'>Precios SQL Server 2008</title><content type='html'>En este enlace tenéis los precios de las distintas versiones de SQL Server 2008.&lt;br /&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx"&gt;http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7801676363814832850?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7801676363814832850/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7801676363814832850' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7801676363814832850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7801676363814832850'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/precios-sql-server-2008.html' title='Precios SQL Server 2008'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6765274935209259856</id><published>2008-09-12T17:56:00.000+02:00</published><updated>2008-09-12T18:01:44.630+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='BD Sospechosa'/><category scheme='http://www.blogger.com/atom/ns#' term='Suspect database'/><title type='text'>BD Sospechosa y SQL Server 2008</title><content type='html'>&lt;div&gt;Gran puntazo a favor de SQL Server 2008!!! Ya no podemos separar por error o desconocimiento una base de datos en estado sospechoso, os adjunto una captura de un futuro post que estoy preparando:  (cómo bien reza, sólo podemos repararla o quitarla (DROP :-)), muhahaha)&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SMqRtbCH4AI/AAAAAAAAACA/o5z0RN0jTqI/s1600-h/Sospechosa4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5245164925563166722" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SMqRtbCH4AI/AAAAAAAAACA/o5z0RN0jTqI/s320/Sospechosa4.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6765274935209259856?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6765274935209259856/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6765274935209259856' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6765274935209259856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6765274935209259856'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/bd-sospechosa-y-sql-server-2008.html' title='BD Sospechosa y SQL Server 2008'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1HanhtyMG8/SMqRtbCH4AI/AAAAAAAAACA/o5z0RN0jTqI/s72-c/Sospechosa4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1574700051084085662</id><published>2008-09-08T21:23:00.000+02:00</published><updated>2008-09-13T19:21:42.434+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error JumpStartTV'/><title type='text'>Errores en la web</title><content type='html'>&lt;div&gt;Errores tontos como diría un compañero, que también tiene su blog personal. Petada al canto al intentar ver más vídeos en la peich de JumpStartTV. La verdad es que tiene vídeos interesantes pero la navegación deja mucho que desear.&lt;br /&gt;Seguro que cuando vean la petada al que se le olvidó poner el Try Catch no se le vuelve a olvidar xDDD.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SMV8zslQOlI/AAAAAAAAAB4/UJ1vLoN9LpE/s1600-h/ErrorJumpStartTV.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5243734568725396050" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SMV8zslQOlI/AAAAAAAAAB4/UJ1vLoN9LpE/s320/ErrorJumpStartTV.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Bueno aún no han corregido el error (13/09/2008) pero la petada ya no es evidente para los demás, parece ser que el Try Catch ha funcionado &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SMv2h9-U9yI/AAAAAAAAACI/2K-e_HqfqlY/s1600-h/JumpStartTVSinError.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5245557254435174178" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SMv2h9-U9yI/AAAAAAAAACI/2K-e_HqfqlY/s320/JumpStartTVSinError.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1574700051084085662?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1574700051084085662/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1574700051084085662' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1574700051084085662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1574700051084085662'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/errores-en-la-web.html' title='Errores en la web'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/SMV8zslQOlI/AAAAAAAAAB4/UJ1vLoN9LpE/s72-c/ErrorJumpStartTV.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6721342708967629601</id><published>2008-09-05T18:41:00.000+02:00</published><updated>2008-09-12T17:30:45.668+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Timeout expired'/><category scheme='http://www.blogger.com/atom/ns#' term='Tiempo de espera agotado'/><title type='text'>Resolución de problemas relacionados con Tiempo de Espera agotado</title><content type='html'>&lt;span lang="ES-TRAD" style="LINE-HEIGHT: 115%;font-family:Calibri;font-size:10;"  &gt;Buscando y rebuscando en los libros en pantalla (sí no tengo otra cosa mejor que hacer ;-) y os sorprenderíais de la documentación que nos aportan y que mucha gente desconoce), he encontrado la solución que nos aporta Microsoft para solucionar los problemas de tiempo de espera agotado al intentar conectar desde nuestra aplicación contra el servidor que contiene &lt;?xml:namespace prefix = st1 /&gt;&lt;st1:personname st="on" productid="la BD.￼"&gt;la BD.&lt;br /&gt;&lt;/st1:personname&gt;A muchos os puede parecer lógico o algo fácil, pero seguro que alguien en algún momento lo ha sufrido y ha tenido que buscar información al respecto (verdad Berni ;-) ).&lt;br /&gt;Bueno no me enrollo más y os pongo el link a los BOL&lt;br /&gt;&lt;br /&gt;ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.es/s10de_4deptrbl/html/ad6e3f43-7d0b-4d6c-ab2a-038a5a3b2690.htm&lt;br /&gt;&lt;br /&gt;y en internet&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/es-es/library/ms190181.aspx&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/1798367132777544496-6721342708967629601?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6721342708967629601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6721342708967629601' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6721342708967629601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6721342708967629601'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/resolucin-de-problemas-relacionados-con.html' title='Resolución de problemas relacionados con Tiempo de Espera agotado'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8872976916728680634</id><published>2008-09-05T18:34:00.000+02:00</published><updated>2008-09-05T18:36:26.955+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reconstruir bases de datos del sistema'/><category scheme='http://www.blogger.com/atom/ns#' term='Rebuild master'/><title type='text'>Reconstruir las Bases de Datos de sistema en SQL Server 2008</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Más conocido como “Rebuild master”. Para hacerlo debemos seguir los siguientes pasos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;1.- Abrimos una consola de msdos y nos situamos en la carpeta dónde tenemos instalado SQL Server 2008 en nuestra máquina, en mi caso C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;2.- Ejecutaremos Setup.exe con las siguientes opciones, si tenemos activado el modo de autenticación usaremos la siguiente sintaxis:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="EN-US" &gt;Setup /ACTION=REBUILDDATABASE /QUIET /INSTANCENAME=&lt;nombreinstancia&gt; /SQLSYSADMINSACCOUNTS=&lt;cuentas&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/cuentas&gt;&lt;/nombreinstancia&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;&lt;nombreinstancia&gt; habrá que sustituirlo por el nombre de nuestra instancia o MSSQLSERVER en caso de que sea la instancia por defecto&lt;o:p&gt;&lt;/o:p&gt;&lt;/nombreinstancia&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;&lt;cuentas&gt; son los grupos de Windows o cuentas individuales.&lt;o:p&gt;&lt;/o:p&gt;&lt;/cuentas&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Si tuviéramos configurado el modo de autenticación mixta usaríamos la misma sintaxis añadiendo la opción /SAPWD para especificar la contraseña del usuario SA. Si no lo hacemos nos daría un error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Si quisiéramos reconstruir las bases de datos de sistema con una intercalación diferente a la usada en la instalación de SQL Server, necesitaremos especificar el parámetro /SQLCOLLATION. Si omitimos el parámetro entonces se reconstruirán con la intercalación que utilizamos en la instalación de SQL Server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;3.- Cuando termine el setup de reconstruir las bases de datos, retornará al prompt sin dar ningún aviso. Si sucediera algún error este se visualizaría en el prompt. En el caso de que no viéramos errores podríamos dar un vistazo al log “Summary”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;4.- Los log se almancenan en \100\setupbootstrap\logs, podemos revisarlo abriendo el fichero Summary.txt&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Por supuesto todo esto lo podemos hacer si la necesidad de tener el DVD de instalación, lo tenemos todo en \Binn\templates, por ejemplo la ruta en mi equipo es C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn\Templates. En este directorio tenemos todas las bases de datos del sistema que se copian en el momento de la instalación. Por lo tanto una vez reconstruyamos las bases de datos tendremos que cogerlas de este directorio y copiarlas en nuestro directorio de datos.&lt;br /&gt;Si en este directorio no tuviéramos estas bases de datos al intentar hacer la reconstrucción nos daría un error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Si no tuviéramos las bases de datos entonces tendríamos que ejecutar la instalación desde el DVD y seleccionar la opción reparar o bien buscar dentro del DVD la siguiente ruta, dependiendo de si es para una plataforma x86, x64 o ia64:&lt;br /&gt;setup\sql_engine_core_inst_msi\PFiles\SqlServr\MSSQL.X\MSSQL\Binn\Template&lt;br /&gt;y copiarlas bases de datos en la carpeta templates de nuestro equipo. Una vez copiadas las bases de datos, ejecutaremos la reconstrucción con la instrucción que os he dado un poco más arriba.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:10;" lang="ES-TRAD" &gt;Otro de los aspectos no mencionados en este ladrillazo es lo siguiente, ¿qué pasa con la base de datos Resource? Muy sencillo, la reconstrucción no vuelve a generar una nueva bd Resource (mssqlsystemresource). Para ello tendremos que ejecutar la instalación desde el DVD y seleccionar la opción Reparar.&lt;o:p&gt;&lt;/o:p&gt;&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/1798367132777544496-8872976916728680634?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8872976916728680634/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8872976916728680634' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8872976916728680634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8872976916728680634'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/reconstruir-las-bases-de-datos-de.html' title='Reconstruir las Bases de Datos de sistema en SQL Server 2008'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-9166471234327549757</id><published>2008-09-03T21:08:00.000+02:00</published><updated>2008-09-03T21:19:30.847+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL SERVER videos'/><title type='text'>Vídeos de SQL SERVER</title><content type='html'>Leyendo diversos post por la red de un lado para otro cuando el tiempo me lo permite he descubierto un site interesante&lt;br /&gt;&lt;br /&gt;http://www.sqlservervideos.com/&lt;br /&gt;&lt;br /&gt;Tenemos los vídeos ordenados por temática, también podemos verlos por nivel de dificultad, por el tipo de audiencia (DBA, programador, ...), etc.  Por el momento son 15 vídeos que imagino irán creciendo con el paso del tiempo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-9166471234327549757?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/9166471234327549757/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=9166471234327549757' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/9166471234327549757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/9166471234327549757'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/09/videos-de-sql-server.html' title='Vídeos de SQL SERVER'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3867521733009460726</id><published>2008-08-29T17:28:00.001+02:00</published><updated>2008-08-29T17:56:53.865+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NC373i'/><category scheme='http://www.blogger.com/atom/ns#' term='General Network error'/><category scheme='http://www.blogger.com/atom/ns#' term='Broadcom NetXtreme II'/><category scheme='http://www.blogger.com/atom/ns#' term='DBNETLIB'/><category scheme='http://www.blogger.com/atom/ns#' term='TCPChimney'/><title type='text'>Pérdida de conexión intermitente entre Windows 2003 Server y SQL Server</title><content type='html'>Al final se corrobora que no sólo de soft vivimos sino que también tenemos que bajar a los infiernos del hard para solventar problemas extraños que te hacen calentarte la cabeza y discutir con tus compañeros y clientes.&lt;br /&gt;&lt;br /&gt;En fin, a los que os pueda surgir este error:&lt;br /&gt;[DBNETLIB]Error general de red. Consulte la documentación de red&lt;br /&gt;&lt;br /&gt;Con esta configuración:&lt;br /&gt;Windows 2003 Server con SP2 y SQL Server 2005 con SP2 y equipados con una tarjeta de red modelo NC373i. Como veréis no sólo se puede producir con esta configuración (expongo esta por ser la que me ha originado el dolor de cabeza :) )&lt;br /&gt;&lt;br /&gt;La solución que nos aporta Microsoft la tenéis en este enlace:&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/942861"&gt;http://support.microsoft.com/kb/942861&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por supuesto recordaros que si aplicando las recomendaciones que nos ofrece Microsoft no conseguimos solucionarlo, debemos pasar a la acción y comprobar que nuestras bases de datos estén libres de errores de consistencia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3867521733009460726?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3867521733009460726/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3867521733009460726' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3867521733009460726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3867521733009460726'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/08/prdida-de-conexin-intermitente-entre.html' title='Pérdida de conexión intermitente entre Windows 2003 Server y SQL Server'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7038867071752238945</id><published>2008-08-08T21:36:00.000+02:00</published><updated>2008-08-08T21:38:06.238+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REPAIR_ALLOW_DATA_LOSS'/><title type='text'>REPAIR_ALLOW_DATA_LOSS y el daño que podemos causar en nuestra BD.</title><content type='html'>La gran mayoría de las veces que nos enfrentemos a un problema en nuestra base de datos la solución que nos ofrece el comando DBCC CHECKDB será que usemos la opción REPAIR_ALLOW_DATA_LOSS, pues bien, antes de lanzarnos de cabeza debemos tener en cuenta los riesgos que podemos sufrir.&lt;br /&gt;&lt;br /&gt;REPAIR_ALLOW_DATA_LOSS es un recurso rápido para poner en funcionamiento nuestra base de datos, el propósito no es guardar los datos de los usuarios, sino recuperar la consistencia estructural de la BD, tan rápido como sea posible de una manera correcta. Pero en este proceso para conseguir la consistencia borrará tanto datos como páginas corruptas.&lt;br /&gt;&lt;br /&gt;Imaginemos el siguiente escenario, el DBA de nuestra entidad bancaria no realiza los backups necesarios para preservar la información y recuperarse de un desastre. El servidor sufre un apagón y resulta dañado un disco duro no pudiendo guardar correctamente una página, causando un TORN PAGE. Desafortunadamente en esa página está nuestra cuenta corriente. Como el DBA no dispone de copias de seguridad realiza una reparación con REPAIR_ALLOW_DATA_LOSS. Como resultado de esta reparación la página dañada resulta borrada!!! Y con ella nuestra cuenta corriente y la muchos otros clientes!!! xDDD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7038867071752238945?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7038867071752238945/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7038867071752238945' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7038867071752238945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7038867071752238945'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/08/repairallowdataloss-y-el-dao-que.html' title='REPAIR_ALLOW_DATA_LOSS y el daño que podemos causar en nuestra BD.'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3011925202854987224</id><published>2008-06-15T16:44:00.000+02:00</published><updated>2008-06-15T16:58:40.442+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rellenar tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='INSERT'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Filling a Table'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Cómo nos puede ayudar Excel a la hora de preparar instrucciones SQL</title><content type='html'>&lt;div&gt;&lt;div&gt;Aquí os pongo un ejemplo de cómo preparar un INSERT generando las instrucciones desde una hoja de excel. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SFUsFHBLumI/AAAAAAAAABo/ocyV2FJyrG8/s1600-h/INSERTExcel.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5212120610046196322" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SFUsFHBLumI/AAAAAAAAABo/ocyV2FJyrG8/s320/INSERTExcel.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Tenemos una tabla Usuarios, con dos columnas ID y Nombre, la fórmula que tenemos que emplear para preparar la instrucción INSERT es:&lt;br /&gt;&lt;br /&gt;=" INSERT INTO Usuarios (ID, Nombre) VALUES ('" &amp;amp; A1 &amp;amp; "', '" &amp;amp; B1 &amp;amp; "'); "&lt;br /&gt;Observaciones: después del paréntesis tenemos una comilla simple acompañada de dobles comillas, con esto conseguimos que excel escriba ', luego después del &amp;amp; tenemos dobles comillas y por último comilla simple y así conseguimos que el dato salga formateado como 'Francisco'&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Después de montar la primera instrucción lo único que tendremos que hacer es arrastrar y soltar hasta dónde queramos y automáticamente se generarán las instrucciones con sus variables correspondientes.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/SFUtovBJeMI/AAAAAAAAABw/3US5R1_SpVk/s1600-h/INSERTExcelArrastrar.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5212122321590515906" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/SFUtovBJeMI/AAAAAAAAABw/3US5R1_SpVk/s320/INSERTExcelArrastrar.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3011925202854987224?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3011925202854987224/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3011925202854987224' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3011925202854987224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3011925202854987224'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/06/cmo-nos-puede-ayudar-excel-la-hora-de.html' title='Cómo nos puede ayudar Excel a la hora de preparar instrucciones SQL'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1HanhtyMG8/SFUsFHBLumI/AAAAAAAAABo/ocyV2FJyrG8/s72-c/INSERTExcel.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6214352794478297686</id><published>2008-06-13T15:26:00.000+02:00</published><updated>2008-06-13T15:40:27.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Obtener columnas tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='Tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Columnas'/><title type='text'>Obtener las columnas de una tabla</title><content type='html'>A veces nos encontramos con la necesidad de obtener todos los campos de una tabla para preparar una instrucción INSERT, si la tabla tiene muchos campos es un tostón tener que ir mirando sus nombres en el Management Studio y tecleándolos, con el más que probable error a la hora de escribir sus nombres correctamente. Para ello podemos utilizar la siguiente query, nos situamos en la BD que queremos consultar&lt;br /&gt;&lt;br /&gt;USE Gestion&lt;br /&gt;GO&lt;br /&gt;SELECT sc.name&lt;br /&gt;FROM sys.objects so INNER JOIN sys.columns sc ON&lt;br /&gt;so.[object_id]=sc.[object_id]&lt;br /&gt;WHERE so.name='Cliente'&lt;br /&gt;&lt;br /&gt;En un próximo post os explicaré la manera de preparar un INSERT con todos los campos de una tabla en cuestión, para que quede la instrucción toda completita y sólo tengamos que copiar y pegar y F5.    xDDD&lt;br /&gt;Me piro para Murcia que quiero coger buen sitio para la charla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6214352794478297686?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6214352794478297686/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6214352794478297686' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6214352794478297686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6214352794478297686'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/06/obtener-las-columnas-de-una-tabla.html' title='Obtener las columnas de una tabla'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8993290410899650808</id><published>2008-06-11T16:02:00.000+02:00</published><updated>2008-06-11T16:32:03.279+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUSENET'/><title type='text'>GUSENET: Estamos en la nube</title><content type='html'>13 de Junio de 2008&lt;br /&gt;&lt;br /&gt;Universidad de Murcia. Facultad de Informática, Aula 0.01 (Primera Planta)&lt;br /&gt;16:00 - 16:30 Registro&lt;br /&gt;16:30 - 17:45 Desarrollo avanzado de controles (Pedro Hurtado)&lt;br /&gt;17:45 - 18:15 Descanso&lt;br /&gt;18:15 - 19:30 SOA, OSLO, SAAS... (Miguel Llopis)&lt;br /&gt;&lt;br /&gt;Link para inscribiros:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032380266&amp;amp;Culture=es-ES"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032380266&amp;amp;Culture=es-ES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8993290410899650808?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8993290410899650808/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8993290410899650808' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8993290410899650808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8993290410899650808'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/06/gusenet-estamos-en-la-nube.html' title='GUSENET: Estamos en la nube'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4939647912108263389</id><published>2008-06-08T16:36:00.001+02:00</published><updated>2008-06-08T16:43:06.283+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Drag and drop'/><category scheme='http://www.blogger.com/atom/ns#' term='PictureBox drag and drop'/><title type='text'>Arrastrar y soltar sobre un PictureBox</title><content type='html'>Bueno esto es algo sencillo de hacer y como no había encontrado nada buscando por internet, pues lo posteo esperando que a alguien le pueda servir.&lt;br /&gt;&lt;br /&gt;El código he pensado que era mejor subirlo en una imagen porque no he investigado mucho otra manera de que quede bien publicado en un post (ya sabéis, no indenta bien y no es muy legible). La aplicación de ejemplo es muy sencilla, tenemos un formulario con 2 picturebox y lo que hace es arrastrar la imagen desde uno de ellos al otro y copiarla (podría haberlo hecho que se moviera, etc, pero eso os lo dejo a vosotros, de todas formas ya os digo que es muy sencillo).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/SEvukAZHEwI/AAAAAAAAABI/P5QJNRkFjsg/s1600-h/CodigoDragAndDrop.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5209519696332133122" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_x1HanhtyMG8/SEvukAZHEwI/AAAAAAAAABI/P5QJNRkFjsg/s320/CodigoDragAndDrop.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora veamos como queda el formulario nada más cargarlo, con una buena pinta de cerveza negra :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SEvu-SYnBcI/AAAAAAAAABY/5b8Wb1VHAdo/s1600-h/ImagenParaArrastrar.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5209520147838469570" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SEvu-SYnBcI/AAAAAAAAABY/5b8Wb1VHAdo/s320/ImagenParaArrastrar.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Y por fin como quedan las imágenes después de haber pinchado sobre la primera y sin soltar arrastrar y soltar sobre el segundo picturebox.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SEvvZ3a_dgI/AAAAAAAAABg/AXjtlV4o2jw/s1600-h/ImagenArrastrada.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5209520621637039618" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SEvvZ3a_dgI/AAAAAAAAABg/AXjtlV4o2jw/s320/ImagenArrastrada.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;Eso es todo amigos, hasta la próxima que no se si será de VB o SQL ;-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4939647912108263389?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4939647912108263389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4939647912108263389' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4939647912108263389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4939647912108263389'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/06/arrastrar-y-soltar-sobre-un-picturebox.html' title='Arrastrar y soltar sobre un PictureBox'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1HanhtyMG8/SEvukAZHEwI/AAAAAAAAABI/P5QJNRkFjsg/s72-c/CodigoDragAndDrop.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6799037355836315217</id><published>2008-05-26T21:15:00.000+02:00</published><updated>2008-05-26T21:22:45.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ThumbDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Thumbs'/><category scheme='http://www.blogger.com/atom/ns#' term='ThumbDBLib'/><title type='text'>Thumbs</title><content type='html'>Investigando un poco como cargar miniaturas de imágenes de un directorio y gracias a un compañero de Gusenet di con esta librería ThumbDBLib (la podéis descargar de &lt;a href="http://www.petedavis.net/MySite/DynPageView.aspx?pageid=31"&gt;http://www.petedavis.net/MySite/DynPageView.aspx?pageid=31&lt;/a&gt;, en el apartado License tenéis el enlace a la descarga, atentos a los comentarios pues uno contiene una modificación de la librería para que no pixele las miniaturas), a nosotros finalmente no nos hizo falta para el trabajo pero seguramente a más de uno, aunque sea por curiosidad le gustará saber lo fácil que puede ser visualizar una miniatura de una imagen en un formulario.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6799037355836315217?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6799037355836315217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6799037355836315217' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6799037355836315217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6799037355836315217'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/05/thumbs.html' title='Thumbs'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7294303655411996288</id><published>2008-05-24T16:32:00.000+02:00</published><updated>2008-05-24T16:44:08.963+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resource database'/><title type='text'>Resource Database</title><content type='html'>Porqué hablar de esta base de datos que a muchos seguramente no os dirá nada, pues muy sencillo, porque ante una pregunta formulada en sqlservercentral.com me surgió la duda de si era una de las bases de datos del sistema de SQL Server 2005.&lt;br /&gt;&lt;br /&gt;La base de datos Resource es de sólo lectura y contiene todos los objetos de sistema (sys.objects). Esta BD hace que las actualizaciones de nuestro SQL Server 2005 sean más sencillas de realizar y más rápidas.&lt;br /&gt;&lt;br /&gt;El nombre físico es mssqlsystemresource.mdf y mssqlsystemresource.ldf, están localizadas por defecto en la ruta de instalación de SQL Server 2005 \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\. Cada instancia tendrá asociada una base de datos resource y no pueden compartirse entre instancias (lógico, ya que cada BD Resource contiene las actualizaciones de cada instancia).&lt;br /&gt;&lt;br /&gt;Un aspecto muy importante y a tener en cuenta es que la BD Resource depende de la localización de la BD master. Si cambiamos de lugar la bd master tendremos que hacer lo mismo con la bd Resource.&lt;br /&gt;&lt;br /&gt;Más información en:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms190940.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms190940.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7294303655411996288?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7294303655411996288/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7294303655411996288' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7294303655411996288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7294303655411996288'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/05/resource-database.html' title='Resource Database'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4484796550444293249</id><published>2008-04-12T20:44:00.000+02:00</published><updated>2008-04-12T20:53:58.624+02:00</updated><title type='text'>Crisis, sí CRISIS</title><content type='html'>Joder con ZP, antes de las elecciones no había crisis, un mes después sí hay crisis. Que a qué viene esto? Pues muy fácil, el día 14 de este mes iba a celebrarse en Alicante un seminario de Solid Quality Learning impartido por Eladio Rincón y yo estaba apuntado gracias a que mi empresa me pagaba el curso. La desilusión llegaba esta semana cuando recibíamos un mail avisándonos que se suspendía el seminario porque no se llegaba al mínimo de asistentes :-(((&lt;br /&gt;&lt;br /&gt;Y claro esto hace reflexionar, sin contar con la gente que se paga el curso de su bolsillo, los que dependen de sus empresas para asistir a este tipo de eventos de formación, si no asisten es porque las empresas no están por la labor de gastar las perras en cursos y ahorrarlo para otros menesteres. En fin que me he desahogado y espero que España remonte el vuelo y para el próximo seminario se cumpla con el mínimo de asistentes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4484796550444293249?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4484796550444293249/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4484796550444293249' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4484796550444293249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4484796550444293249'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/04/crisis-s-crisis.html' title='Crisis, sí CRISIS'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-7048935433506512494</id><published>2008-04-12T18:56:00.000+02:00</published><updated>2008-04-12T19:05:29.792+02:00</updated><title type='text'>Vídeos evento del 7 de Marzo GUSENET</title><content type='html'>Ya tenemos los vídeos de las sesiones celebradas ese día en Clave Informática.&lt;br /&gt;Los 3 primeros vídeos son de David Bernad (&lt;a href="http://bernilost.blogspot.com/"&gt;http://bernilost.blogspot.com/&lt;/a&gt;) un compi de trabajo y amigo ;-) que hizo una exposición de WPF y herramientas con las que trabaja para modelado en 3D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoWPF3DParte1/tabid/359/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoWPF3DParte1/tabid/359/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoWPF3DParte2/tabid/360/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoWPF3DParte2/tabid/360/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoWPF3DParte3/tabid/361/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoWPF3DParte3/tabid/361/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los vídeos de la segunda charla que trataba de una pequeña introducción a LINQ to SQL por Jorge Martínez&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoLINQParte1/tabid/362/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoLINQParte1/tabid/362/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoLINQParte2/tabid/363/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoLINQParte2/tabid/363/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gusenet.gruposdeusuarios.net/VideoLINQParte3/tabid/364/Default.aspx"&gt;http://gusenet.gruposdeusuarios.net/VideoLINQParte3/tabid/364/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los vídeos cortesía de Miguel Ángel Gras (saludos ex vecino)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-7048935433506512494?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/7048935433506512494/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=7048935433506512494' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7048935433506512494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/7048935433506512494'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/04/vdeos-evento-del-7-de-marzo-gusenet.html' title='Vídeos evento del 7 de Marzo GUSENET'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4765192775046675747</id><published>2008-04-12T18:36:00.000+02:00</published><updated>2008-04-12T18:55:12.065+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MsiSetExternalUIRecord'/><title type='text'>Instalando SQL Server 2008 CTP de Noviembre</title><content type='html'>Sí, ya se que esto está más que resuelto y que el propio microsoft da la solución, pero el caso es que no tenía internet cuando estaba haciendo la instalación y me quedé un poco con cara de gili al ver ayer que no podía instalar la CTP de Noviembre, en fin mirando el lado positivo, me pegué una viciada a la XBOX 360 xDDD.&lt;br /&gt;&lt;br /&gt;Para todos aquellos que vayan a instalar la CTP de Noviembre en una instalación limpia sobre Virtual PC y un XP con SP2 que sepáis que antes de poneros con la instalación tenéis que instalar Windows Installer 3.1 sino os dará una petada como esta:&lt;br /&gt;&lt;br /&gt;-Unable to find an entry point named 'MsiSetExternalUIRecord' in DLL 'msi.dll'..&lt;br /&gt;&lt;br /&gt;El instalador lo podéis encontrar en el propio DVD en la carpeta:&lt;br /&gt;Servers\redist\Windows Installer&lt;br /&gt;Y también como siempre en el centro de descargas de Microsoft.&lt;br /&gt;&lt;br /&gt;Espero que os sea de utilidad a los que aún no tengáis instalada esta CTP y os encontréis con el mismo problema. Salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4765192775046675747?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4765192775046675747/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4765192775046675747' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4765192775046675747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4765192775046675747'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/04/instalando-sql-server-2008-ctp-de.html' title='Instalando SQL Server 2008 CTP de Noviembre'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1613667255965073027</id><published>2008-03-31T21:15:00.000+02:00</published><updated>2008-03-31T21:48:01.208+02:00</updated><title type='text'>Varios Microsoft y SQL Server</title><content type='html'>Estamos a puntito de que Microsoft de por terminado el soporte técnico a SQL Server 2000 en sus versiones 64-Bit, Developer Edition, Enterprise Edition, Standard Edition y Workgroup Edition, la fecha de su defunción es el día 4 de Abril de 2008, eso sí, si disponéis del soporte técnico ampliado podréis disfrutar de él hasta el 9 de Abril de 2013.&lt;br /&gt;Si quieres estar al día puedes visitar este enlace:&lt;br /&gt;&lt;a href="http://support.microsoft.com/lifecycle/?p1=2852"&gt;http://support.microsoft.com/lifecycle/?p1=2852&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por otra parte, ante el retraso sufrido por SQL Server 2008 RTM, la comunidad está pidiendo a gritos la publicación del Service Pack 3 para SQL Server 2005. Desde el Service Pack 2 ya se han publicado 6 versiones acumulativas y actualmente se está preparando una séptima. Ya sabéis si queréis estar al día debéis visitar:&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx/kb/937137/en-us"&gt;http://support.microsoft.com/default.aspx/kb/937137/en-us&lt;/a&gt;# (y como ellos mismos dicen, "si no se ve gravemente afectados por cualquiera de estos problemas, nosotros recomendamos que espere al Service Pack siguiente de SQL Server 2005 que contiene la revisión en este paquete de actualización acumulativa")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1613667255965073027?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1613667255965073027/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1613667255965073027' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1613667255965073027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1613667255965073027'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/03/varios-microsoft-y-sql-server.html' title='Varios Microsoft y SQL Server'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1585221791128088874</id><published>2008-02-24T16:52:00.000+01:00</published><updated>2008-02-24T16:56:28.639+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BackupDeviceItem'/><category scheme='http://www.blogger.com/atom/ns#' term='SMO'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlBackup'/><title type='text'>SMO (SQL MANAGEMENT OBJECTS)</title><content type='html'>SMO es un conjunto de objetos de programación que cuenta con toda la funcionalidad de administración de la base de datos de SQL Server. De hecho, Management Studio se creó con SQL Management Objects. SMO se implementa como un ensamblado de Microsoft .NET Framework. Podemos utilizar SMO para automatizar las tareas administrativas habituales de SQL Server, como la recuperación mediante programación de los valores de configuración, la creación de nuevas bases de datos, la aplicación de secuencias de comandos de T-SQL, la creación de trabajos de SQL Server Agent y la programación de copias de seguridad. El modelo de objetos SMO es una sustitución más segura, confiable y escalable de los Objetos de administración distribuida (DMO), que se incluyó en las versiones anteriores de SQL Server.Para implementar en nuestra aplicación la funcionalidad de SMO debemos añadir una referencia al espacio de nombres Microsoft.SqlServer.SMO, esta dll la encontraremos en C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies&lt;br /&gt;&lt;br /&gt;Ejemplo de cómo crear un Backup con SMO desde VB:&lt;br /&gt;&lt;br /&gt;Imports Microsoft.SqlServer.Management.Smo&lt;br /&gt;Public Class frmInicio&lt;br /&gt;&lt;br /&gt;    Private Sub cmdBackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBackup.Click&lt;br /&gt;        Try&lt;br /&gt;            Dim bck As New Backup&lt;br /&gt;            Debug.Print(DateTime.UtcNow)&lt;br /&gt;            bck.Database = "PRUEBA"&lt;br /&gt;            bck.Devices.Add(New BackupDeviceItem("C:\BACKUP\PRUEBA.bak", DeviceType.File))&lt;br /&gt;            bck.Action = BackupActionType.Database&lt;br /&gt;            bck.SqlBackup(New Server("PCFRAN"))&lt;br /&gt;            Debug.Print(DateTime.UtcNow)&lt;br /&gt;            MsgBox("Backup realizado con éxito")&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;            MsgBox(ex.Message)&lt;br /&gt;        End Try&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;En los BOL de SQL Server 2005 podemos encontrar numerosos ejemplos de cómo programar jobs, etc. todo con SMO. Como muestra un botón:&lt;br /&gt;&lt;br /&gt;ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/smo9/html/a15949ef-88d9-4205-892e-0b66588b4fcc.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1585221791128088874?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1585221791128088874/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1585221791128088874' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1585221791128088874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1585221791128088874'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/02/smo-sql-management-objects.html' title='SMO (SQL MANAGEMENT OBJECTS)'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-8015049382408043525</id><published>2008-02-24T16:40:00.000+01:00</published><updated>2008-02-24T16:51:48.115+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlException'/><category scheme='http://www.blogger.com/atom/ns#' term='Error severity level'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlError'/><title type='text'>Interceptando Errores en SQL Server con .Net Framework 2.0</title><content type='html'>Una conexión SqlConnection permanecerá abierta mientras el nivel de severidad del error sea de 19 o menos, para errores iguales o por encima de un nivel 20 se cerrará automáticamente la conexión.&lt;br /&gt;A continuación se muestra información del nivel de severidad y una descripción (información extraída de los BOL de SQL Server 2005)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;0-9&lt;br /&gt;&lt;/strong&gt;Informational messages that return status information or report errors that are not severe. The Database Engine does not raise system errors with severities of 0 through 9.&lt;br /&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;br /&gt;Informational messages that return status information or report errors that are not severe. For compatibility reasons, the Database Engine converts severity 10 to severity 0 before returning the error information to the calling application.&lt;br /&gt;&lt;strong&gt;11-16&lt;/strong&gt;&lt;br /&gt;Indicate errors that can be corrected by the user.&lt;br /&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;br /&gt;Indicates that the given object or entity does not exist.&lt;br /&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;br /&gt;A special severity for queries that do not use locking because of special query hints. In some cases, read operations performed by these statements could result in inconsistent data, since locks are not taken to guarantee consistency.&lt;br /&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;br /&gt;Indicates transaction deadlock errors.&lt;br /&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;br /&gt;Indicates security-related errors, such as permission denied.&lt;br /&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;br /&gt;Indicates syntax errors in the Transact-SQL command.&lt;br /&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;br /&gt;Indicates general errors that can be corrected by the user.&lt;br /&gt;&lt;strong&gt;17-19&lt;br /&gt;&lt;/strong&gt;Indicate software errors that cannot be corrected by the user. Inform your system administrator of the problem.&lt;br /&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;br /&gt;Indicates that the statement caused SQL Server to run out of resources (such as memory, locks, or disk space for the database) or to exceed some limit set by the system administrator.&lt;br /&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;br /&gt;Indicates a problem in the Database Engine software, but the statement completes execution, and the connection to the instance of the Database Engine is maintained. The system administrator should be informed every time a message with a severity level of 18 occurs.&lt;br /&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;br /&gt;Indicates that a nonconfigurable Database Engine limit has been exceeded and the current batch process has been terminated. Error messages with a severity level of 19 or higher stop the execution of the current batch. Severity level 19 errors are rare and must be corrected by the system administrator or your primary support provider. Contact your system administrator when a message with a severity level 19 is raised. Error messages with a severity level from 19 through 25 are written to the error log.&lt;br /&gt;&lt;strong&gt;20-25&lt;/strong&gt;&lt;br /&gt;Indicate system problems and are fatal errors, which means that the Database Engine task that is executing a statement or batch is no longer running. The task records information about what occurred and then terminates. In most cases, the application connection to the instance of the Database Engine may also terminate. If this happens, depending on the problem, the application might not be able to reconnect.&lt;br /&gt;Error messages in this range can affect all of the processes accessing data in the same database and may indicate that a database or object is damaged. Error messages with a severity level from 19 through 25 are written to the error log.&lt;br /&gt;&lt;strong&gt;20&lt;br /&gt;&lt;/strong&gt;Indicates that a statement has encountered a problem. Because the problem has affected only the current task, it is unlikely that the database itself has been damaged.&lt;br /&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;br /&gt;Indicates that a problem has been encountered that affects all tasks in the current database, but it is unlikely that the database itself has been damaged.&lt;br /&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;br /&gt;Indicates that the table or index specified in the message has been damaged by a software or hardware problem.&lt;br /&gt;Severity level 22 errors occur rarely. If one occurs, run DBCC CHECKDB to determine whether other objects in the database are also damaged. The problem might be in the buffer cache only and not on the disk itself. If so, restarting the instance of the Database Engine corrects the problem. To continue working, you must reconnect to the instance of the Database Engine; otherwise, use DBCC to repair the problem. In some cases, you may have to restore the database.&lt;br /&gt;If restarting the instance of the Database Engine does not correct the problem, then the problem is on the disk. Sometimes destroying the object specified in the error message can solve the problem. For example, if the message reports that the instance of the Database Engine has found a row with a length of 0 in a nonclustered index, delete the index and rebuild it.&lt;br /&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;br /&gt;Indicates that the integrity of the entire database is in question because of a hardware or software problem.&lt;br /&gt;Severity level 23 errors occur rarely. If one occurs, run DBCC CHECKDB to determine the extent of the damage. The problem might be in the cache only and not on the disk itself. If so, restarting the instance of the Database Engine corrects the problem. To continue working, you must reconnect to the instance of the Database Engine; otherwise, use DBCC to repair the problem. In some cases, you may have to restore the database.&lt;br /&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;br /&gt;Indicates a media failure. The system administrator may have to restore the database. You may also have to call your hardware vendor.&lt;br /&gt;&lt;br /&gt;Ahora veamos la manera de interceptar los errores desde nuestra aplicación, el código que muestro a continuación intercepta posibles errores a la hora de conectar con nuestra base de datos&lt;br /&gt;&lt;br /&gt;Private Sub ConectarBD(ByVal cadenaConexion As String)&lt;br /&gt;        Dim conn As New SqlConnection(cadenaConexion)&lt;br /&gt;        Try&lt;br /&gt;            conn.Open()&lt;br /&gt;        Catch ex As SqlException&lt;br /&gt;            Dim errorMessage As String = ""&lt;br /&gt;            'Recorremos todos los errores que nos devuelva.&lt;br /&gt;            'Podemos inspeccionar los errores para devolver mensajes personalizados dependiendo&lt;br /&gt;            'del tipo de error.&lt;br /&gt;            For Each connectionError As SqlError In ex.Errors&lt;br /&gt;                errorMessage += connectionError.Message &amp;amp; "error: " &amp;amp; _&lt;br /&gt;                    connectionError.Number.ToString &amp;amp; ")" &amp;amp; Environment.NewLine&lt;br /&gt;                'Aquí podríamos poner un SELECT CASE con los códigos de error más comunes, como&lt;br /&gt;                'login de usuario, nombre de la base de datos, etc&lt;br /&gt;                If connectionError.Number = 18456 Then&lt;br /&gt;                    MsgBox("Login inválido, por favor introduzca unas credenciales válidas")&lt;br /&gt;                End If&lt;br /&gt;            Next&lt;br /&gt;            MessageBox.Show(errorMessage)&lt;br /&gt;        Finally&lt;br /&gt;            conn.Close()&lt;br /&gt;        End Try&lt;br /&gt;    End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-8015049382408043525?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/8015049382408043525/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=8015049382408043525' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8015049382408043525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/8015049382408043525'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/02/interceptando-errores-en-sql-server-con.html' title='Interceptando Errores en SQL Server con .Net Framework 2.0'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1358506582559704058</id><published>2008-02-17T15:00:00.000+01:00</published><updated>2008-02-17T15:15:00.487+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUSENET'/><category scheme='http://www.blogger.com/atom/ns#' term='MERGE'/><title type='text'>Reunión Gusenet 25 Enero</title><content type='html'>Sí hacía tiempo que no subía nada nuevo al blog, las fiestas y el cansancio acumulado me lo han impedido, pero bueno ahora toca ponerse las pilas y seguir remando.&lt;br /&gt;&lt;br /&gt;   El 25 de Enero se celebró en la Facultad de Ingeniería Informática de la Universidad de Murcia una nueva reunión del grupo Gusenet, los temas que se trataron iban a ser 2, una introducción al nuevo plan general contable y después un cubo OLAP de contabilidad impartido por Miguel Egea. Si he de seros sincero lo que más ilusión me hacía era esta última parte, y al final por problemas de trabajo Miguel no pudo asistir, pero en su lugar apareció Francisco González ( también de Solid) y nos adelantó dos nuevas mejoras incluidas en SQL Server 2008, el Data Change Capture y la instrucción MERGE.&lt;br /&gt;&lt;br /&gt;   La instrucción MERGE es una novedad relativa del estándar SQL, por la que podemos insertar, actualizar y eliminar simultáneamente. Esta instrucción ya estaba disponible en ORACLE y ha sido una gran idea incluirla en la nueva versión de SQL Server. Veamos un ejemplo de como sincronizar 2 tablas de empleados:&lt;br /&gt;&lt;br /&gt;MERGE EmpleadosSync as ES&lt;br /&gt;USING Empleados AS E&lt;br /&gt;ON (E.EmpleadoID = ES.EmpleadoID)&lt;br /&gt;WHEN MATCHED AND E.Nombre &lt;&gt; ES.Nombre&lt;br /&gt;                THEN UPDATE SET ES.Nombre = E.Nombre&lt;br /&gt;WHEN NOT MATCHED THEN&lt;br /&gt;                INSERT (EmpleadoID, Nombre) VALUES (E.EmpleadoID, E.Nombre)&lt;br /&gt;WHEN SOURCE NOT MATCHED THEN&lt;br /&gt;                DELETE;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1358506582559704058?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1358506582559704058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1358506582559704058' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1358506582559704058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1358506582559704058'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2008/02/reunin-gusenet-25-enero.html' title='Reunión Gusenet 25 Enero'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-722687706356197875</id><published>2007-12-25T16:35:00.000+01:00</published><updated>2007-12-25T16:38:01.132+01:00</updated><title type='text'>FELIZ NAVIDAD!!!</title><content type='html'>Feliz Navidad a todos, espero que paséis unos buenos días en estas fechas navideñas acompañados de la gente que más os importa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-722687706356197875?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/722687706356197875/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=722687706356197875' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/722687706356197875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/722687706356197875'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/12/feliz-navidad.html' title='FELIZ NAVIDAD!!!'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5867688708271657779</id><published>2007-12-23T14:47:00.000+01:00</published><updated>2007-12-23T14:52:18.388+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Join'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual'/><category scheme='http://www.blogger.com/atom/ns#' term='Explanation'/><title type='text'>Explicación visual de los SQL JOIN</title><content type='html'>Hace un tiempo buscando por la red me encontré con un artículo interesante para la gente que empieza con SQL, como me pareció de ayuda he vuelto a buscarlo para aquellos que puedan necesitarlo. Aquí os dejo los enlaces al mismo artículo uno en castellano y el otro en inglés:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://boozox.net/mysql/explicacion-visual-de-los-sql-join-unir-tablas-con-sql/"&gt;http://boozox.net/mysql/explicacion-visual-de-los-sql-join-unir-tablas-con-sql/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000976.html"&gt;http://www.codinghorror.com/blog/archives/000976.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5867688708271657779?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5867688708271657779/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5867688708271657779' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5867688708271657779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5867688708271657779'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/12/explicacin-visual-de-los-sql-join.html' title='Explicación visual de los SQL JOIN'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3837714623283939408</id><published>2007-11-26T21:35:00.000+01:00</published><updated>2007-11-26T21:49:12.050+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUSENET'/><title type='text'>3er Aniversario GUSENET</title><content type='html'>&lt;strong&gt;GOZADA&lt;/strong&gt;, así con letras mayúsculas eso es lo que ha sido para mí el 3er aniversario del grupo Gusenet. Evento organizado en Santa Pola gracias a Oscar Montesinos. Hemos pasado un fin de semana inolvidable, en el que he conocido gente como el Guille (con dedicatoria de libro incluida), David Salgado, Eladio Rincón, Salvador Ramos, Pedro Hurtado, José Miguel Torres, Francisco González, si me dejo alguno en el camino lo siento. Gente con la cual he podido charlar y comprobar que es gente cercana y dispuesta a darte una solución a un problema de manera desinteresada. La verdad es que se me ha pasado volando el finde y no veo el momento de poder repetirlo.&lt;br /&gt;&lt;br /&gt;Desde aquí animo a la gente que no conoce el grupo a que se una y podamos compartir entre todos nuestros conocimientos por pequeños que sean.&lt;br /&gt;&lt;br /&gt;Queda pendiente el que suba algunas fotos para el recuerdo de todos y ampliar un poco más el post con las sesiones que impartieron El Guille y David Salgado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3837714623283939408?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3837714623283939408/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3837714623283939408' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3837714623283939408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3837714623283939408'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/11/3er-aniversario-gusenet.html' title='3er Aniversario GUSENET'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-593979226420570901</id><published>2007-10-20T16:15:00.000+02:00</published><updated>2007-10-20T16:36:07.724+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GetDataSources'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlDataSourceEnumerator'/><title type='text'>Enumeración de Instancias de SQL Server</title><content type='html'>.Net Framework nos provee de una clase que nos permite enumerar todos los servidores de SQL Server en una red local. La clase en cuestión es &lt;strong&gt;SqlDataSourceEnumerator. &lt;/strong&gt;La manera de usarla sería&lt;br /&gt;&lt;br /&gt;Dim servidores As System.Data.Sql.SqlDataSourceEnumerator = System.Data.Sql.SqlDataSourceEnumerator.Instance&lt;br /&gt;&lt;br /&gt;Combobox1.DataSource = servidores.GetDataSources&lt;br /&gt;&lt;br /&gt;El método GetDataSources devuelve un DataTable que podremos usar para devolver los valores en un ComboBox o en un DataGridView. La tabla que devuelve la llamada al método contiene las siguientes columnas, cada una de las cuales incluye valores string:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Columna                                                  Descripción&lt;br /&gt;=======                                                =========&lt;br /&gt;ServerName                                           Nombre del servidor.&lt;br /&gt;InstanceName                                        Nombre de la instancia del servidor. Si el servidor se&lt;br /&gt;                                                                  ejecuta como instancia predeterminada,&lt;br /&gt;                                                                  esta columna se muestra en blanco.&lt;br /&gt;IsClustered                                             Indica si el servidor forma parte de un clúster.&lt;br /&gt;Version                                                    Versión del servidor (8.00.x para SQL Server 2000&lt;br /&gt;                                                                 y 9.00.x para SQL Server 2005).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Limitaciones de la enumeración&lt;br /&gt;&lt;/strong&gt;   Es posible que en la lista no aparezcan todos los servidores disponibles. La lista puede variar dependiendo de algunos factores, como los tiempos de espera o el tráfico de la red. Como consecuencia, la lista puede ser diferente en dos llamadas consecutivas. Sólo aparecerán en la lista los servidores de la misma red. Normalmente, los paquetes de difusión no recorren los enrutadores; este es el motivo de que a lo mejor no pueda ver uno de los servidores que aparecen en la lista, aunque se mantenga estable entre llamadas.&lt;br /&gt;    Los servidores de la lista pueden tener o no información adicional como IsClustered y la versión. Todo depende de cómo se haya obtenido la lista. Los servidores que aparecen en la lista a través del servicio de explorador de SQL Server tendrán más detalles que los que se encuentran a través de la infraestructura de Windows, que sólo muestra el nombre.&lt;br /&gt;&lt;br /&gt;   La enumeración de servidores sólo se encuentra disponible cuando se ejecuta con plena confianza. Los ensamblados que se ejecutan en un entorno de confianza parcial no podrán utilizarla, aunque dispongan del permiso de seguridad de acceso a código (CAS) &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl06ctl00_LibFrame_ctl15',this);" href="http://msdn2.microsoft.com/es-es/library/system.data.sqlclient.sqlclientpermission(VS.80).aspx"&gt;SqlClientPermission&lt;/a&gt;.&lt;br /&gt;   SQL Server 2000 proporciona información del SqlDataSourceEnumerator a nivel interno. SQL Server 2005, sin embargo, lo hace mediante el uso de un servicio externo llamado Explorador de SQL. Este servicio está habilitado de forma predeterminada, pero los administradores pueden desactivarlo o deshabilitarlo, para que la instancia del servidor sea invisible para esta clase. Este servicio sólo se aplica a SQL Server 2005 y no tiene efecto alguno en el comportamiento de SQL Server 2000.&lt;br /&gt;   El hardware o el software puede limitar la capacidad para buscar instancias de SQL Server.&lt;br /&gt;&lt;br /&gt;Si queréis más información la podéis conseguir en la msdn en el siguiente enlace:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/a6t1z9x2(VS.80).aspx"&gt;http://msdn2.microsoft.com/es-es/library/a6t1z9x2(VS.80).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gracias a la MSDN por alumbrarme en ciertas tareas del trabajo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-593979226420570901?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/593979226420570901/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=593979226420570901' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/593979226420570901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/593979226420570901'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/10/enumeracin-de-instancias-de-sql-server.html' title='Enumeración de Instancias de SQL Server'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-468722685575509519</id><published>2007-10-19T19:05:00.000+02:00</published><updated>2007-10-20T15:58:26.184+02:00</updated><title type='text'>FRVSoft Google Analytics</title><content type='html'>Allá vamos, el blog se une a la moda de BI de la mano de Google Analytics y yo con estos pelos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/Rxjm_Je30jI/AAAAAAAAAA0/PRWzgV89fxQ/s1600-h/GoogleAnalitycs.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123098548685492786" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/Rxjm_Je30jI/AAAAAAAAAA0/PRWzgV89fxQ/s320/GoogleAnalitycs.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por algún sitio hay que empezar, más limpito imposible xD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-468722685575509519?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/468722685575509519/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=468722685575509519' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/468722685575509519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/468722685575509519'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/10/frvsoft-google-analitycs.html' title='FRVSoft Google Analytics'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1HanhtyMG8/Rxjm_Je30jI/AAAAAAAAAA0/PRWzgV89fxQ/s72-c/GoogleAnalitycs.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3369461438699519889</id><published>2007-10-19T18:48:00.000+02:00</published><updated>2007-10-19T19:04:51.777+02:00</updated><title type='text'>Data Mining Add-ins para Excel 2007</title><content type='html'>En este enlace os podéis descargar unas herramientas interesantes para trabajar con minería de datos desde Excel y Visio 2007. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7c76e8df-8674-4c3b-a99b-55b17f3c4c51&amp;amp;displaylang=es#filelist"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=7c76e8df-8674-4c3b-a99b-55b17f3c4c51&amp;amp;displaylang=es#filelist&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los requisitos son:&lt;br /&gt;Los complementos de minería de datos requieren una conexión a una instancia de SQL Server 2005 Analysis Services. Esta instancia debe encontrarse en un equipo que ejecute cualquiera de las siguientes versiones de SQL Server 2005:&lt;br /&gt;-SQL Server 2005 Enterprise Edition&lt;br /&gt;Service Pack 1 (SP1) de SQL Server 2005 Enterprise Edition&lt;br /&gt;Service Pack 2 (SP2) de SQL Server 2005 Enterprise Edition&lt;br /&gt;-SP2 de SQL Server 2005 Standard Edition, con la revisión acumulativa (compilación 3152) instalada. &lt;strong&gt;El hotfix lo podemos obtener de&lt;/strong&gt; &lt;a href="http://support.microsoft.com/kb/933097"&gt;http://support.microsoft.com/kb/933097&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una captura de pantalla con el add-in incorporado en el ribbon de excel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1HanhtyMG8/RxjjNZe30iI/AAAAAAAAAAs/AjIkA-pLXCA/s1600-h/Excel+Datamining.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5123094395452117538" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_x1HanhtyMG8/RxjjNZe30iI/AAAAAAAAAAs/AjIkA-pLXCA/s320/Excel+Datamining.JPG" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3369461438699519889?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3369461438699519889/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3369461438699519889' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3369461438699519889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3369461438699519889'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/10/data-mining-add-ins-para-excel-2007.html' title='Data Mining Add-ins para Excel 2007'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1HanhtyMG8/RxjjNZe30iI/AAAAAAAAAAs/AjIkA-pLXCA/s72-c/Excel+Datamining.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1286088774981709699</id><published>2007-10-14T16:57:00.000+02:00</published><updated>2007-10-14T17:04:37.317+02:00</updated><title type='text'>Cálculos erróneos en Excel 2007</title><content type='html'>Aquí os dejo el enlace (&lt;a href="http://download.microsoft.com/download/6/1/3/61343075-aa12-4152-a761-fccc16d6cef4/office-kb943075-fullfile-x86-glb.exe"&gt;http://download.microsoft.com/download/6/1/3/61343075-aa12-4152-a761-fccc16d6cef4/office-kb943075-fullfile-x86-glb.exe&lt;/a&gt;), para descargaros el parche que soluciona un bug de Excel 2007, el problema es el siguiente:&lt;br /&gt;   -Si el resultado del cálculo es un número entre 65534.99999999995 entre 65.535. Se realiza el cálculo correctamente. &lt;strong&gt;Sin embargo, el resultado se muestra incorrectamente como 100.000&lt;/strong&gt;.&lt;br /&gt;   -Si el resultado del cálculo es un número entre 65535.99999999995 entre 65.536. Se realiza el cálculo correctamente. &lt;strong&gt;Sin embargo, el resultado se muestra incorrectamente como 100.001&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Después de aplicar el parche hay que recalcular las hojas de cálculo que estén en modo manual para corregir los posibles errores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1286088774981709699?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1286088774981709699/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1286088774981709699' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1286088774981709699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1286088774981709699'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/10/clculos-errneos-en-excel-2007.html' title='Cálculos erróneos en Excel 2007'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-1054189927732410191</id><published>2007-09-15T18:48:00.000+02:00</published><updated>2009-06-14T12:24:46.909+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Versiones SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server Version'/><title type='text'>Versiones de SQL Server</title><content type='html'>Para conocer la versión de SQL Server que usa un servidor, usaremos la sentencia SELECT @@Version, en negrita he resaltado los resultados que nos puede devolver la consulta. A continuación os detallo las distintas versiones de SQL Server que existen: (he omitido las actualizaciones acumulativas excepto las de SQL Server 2008)&lt;br /&gt;&lt;br /&gt;SQL SERVER 2008&lt;br /&gt;---------------&lt;br /&gt;SQL Server code name "Katmai" (CTP) - &lt;strong&gt;10.0.1075.23&lt;/strong&gt; (no podía resistirme)&lt;br /&gt;SQL Server 2008 RTM &lt;strong&gt;10.00.1600&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 RTM CU1 &lt;strong&gt;10.00.1763&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 RTM CU2 &lt;strong&gt;10.00.1779&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 RTM CU3 &lt;strong&gt;10.00.1787&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 RTM CU4 &lt;strong&gt;10.00.1798&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 RTM CU5 &lt;strong&gt;10.00.1806&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 SP1 &lt;strong&gt;10.00.2531&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 SP1 CU1 &lt;strong&gt;10.00.2710&lt;/strong&gt;&lt;br /&gt;SQL Server 2008 SP1 CU2 &lt;strong&gt;10.00.2714&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL SERVER 2005&lt;br /&gt;---------------&lt;br /&gt;SQL Server 2005 RTM &lt;strong&gt;9.00.1399 &lt;/strong&gt;&lt;br /&gt;SQL Server 2005 Service Pack 1 &lt;strong&gt;9.00.2047 &lt;/strong&gt;&lt;br /&gt;SQL Server 2005 Service Pack 2 &lt;strong&gt;9.00.3042 &lt;/strong&gt;&lt;br /&gt;SQL Server 2005 Service Pack 3 &lt;strong&gt;9.00.4035&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL SERVER 2000&lt;br /&gt;---------------&lt;br /&gt;RTM 2000.80.194.0&lt;br /&gt;SQL Server 2000 SP1 &lt;strong&gt;2000.80.384.0&lt;/strong&gt;&lt;br /&gt;SQL Server 2000 SP2 &lt;strong&gt;2000.80.534.0&lt;/strong&gt;&lt;br /&gt;SQL Server 2000 SP3 &lt;strong&gt;2000.80.760.0&lt;/strong&gt;&lt;br /&gt;SQL Server 2000 SP3a &lt;strong&gt;2000.80.760.0&lt;/strong&gt;&lt;br /&gt;SQL Server 2000 SP4 &lt;strong&gt;2000.8.00.2039 &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL SERVER 7.0&lt;br /&gt;--------------&lt;br /&gt;&lt;strong&gt;7.00.1063&lt;/strong&gt; SQL Server 7.0 Service Pack 4 (SP4)&lt;br /&gt;&lt;strong&gt;7.00.961 &lt;/strong&gt;SQL Server 7.0 Service Pack 3 (SP3)&lt;br /&gt;&lt;strong&gt;7.00.842 &lt;/strong&gt;SQL Server 7.0 Service Pack 2 (SP2)&lt;br /&gt;&lt;strong&gt;7.00.699 &lt;/strong&gt;SQL Server 7.0 Service Pack 1 (SP1)&lt;br /&gt;&lt;strong&gt;7.00.623&lt;/strong&gt; SQL Server 7.0 RTM (Release To Manufacturing)&lt;br /&gt;&lt;br /&gt;SQL SERVER 6.5&lt;br /&gt;--------------&lt;br /&gt;&lt;strong&gt;6.50.479 &lt;/strong&gt;SQL Server 6.5 Service Pack 5a (SP5a) Update&lt;br /&gt;&lt;strong&gt;6.50.416 &lt;/strong&gt;SQL Server 6.5 Service Pack 5a (SP5a)&lt;br /&gt;&lt;strong&gt;6.50.415 &lt;/strong&gt;SQL Server 6.5 Service Pack 5 (SP5)&lt;br /&gt;&lt;strong&gt;6.50.281 &lt;/strong&gt;SQL Server 6.5 Service Pack 4 (SP4)&lt;br /&gt;&lt;strong&gt;6.50.258 &lt;/strong&gt;SQL Server 6.5 Service Pack 3 (SP3)&lt;br /&gt;&lt;strong&gt;6.50.240 &lt;/strong&gt;SQL Server 6.5 Service Pack 2 (SP2)&lt;br /&gt;&lt;strong&gt;6.50.213 &lt;/strong&gt;SQL Server 6.5 Service Pack 1 (SP1)&lt;br /&gt;&lt;strong&gt;6.50.201 &lt;/strong&gt;SQL Server 6.5 RTM&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-1054189927732410191?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/1054189927732410191/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=1054189927732410191' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1054189927732410191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/1054189927732410191'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/09/versiones-de-sql-server.html' title='Versiones de SQL Server'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-5184623970337019235</id><published>2007-09-14T18:25:00.000+02:00</published><updated>2007-09-14T18:32:47.767+02:00</updated><title type='text'>Shift + Botón derecho para Windows Vista</title><content type='html'>Navegando por el ciberspacio he encontrado una combinación de teclas y ratón que nos puede ayudar en el día a día de nuestro trabajo.&lt;br /&gt;Si sobre un fichero pulsamos SHIFT + Botón derecho del ratón veremos como se despliegan nuevas opciones, una de ellas que nos puede resultar bastante útil es la de &lt;strong&gt;Copiar como ruta de acceso&lt;/strong&gt;, lo que hace es, copia la ruta dónde se halla este fichero al portapapeles, ya os podéis imaginar para que lo podemos usar, se acabó el ir abriendo la ruta y seleccionándola para luego copiar y pegar.&lt;br /&gt;&lt;br /&gt;Espero que os sea de utilidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-5184623970337019235?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/5184623970337019235/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=5184623970337019235' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5184623970337019235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/5184623970337019235'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/09/shift-botn-derecho-para-windows-vista.html' title='Shift + Botón derecho para Windows Vista'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2744250719628655142</id><published>2007-08-24T19:16:00.000+02:00</published><updated>2007-08-24T19:29:55.316+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALTER'/><category scheme='http://www.blogger.com/atom/ns#' term='Tabla'/><category scheme='http://www.blogger.com/atom/ns#' term='sysobjects'/><category scheme='http://www.blogger.com/atom/ns#' term='ALTER TABLE'/><category scheme='http://www.blogger.com/atom/ns#' term='syscolumns'/><category scheme='http://www.blogger.com/atom/ns#' term='TABLE'/><title type='text'>Existe un campo en una tabla</title><content type='html'>Bueno visitando las news de microsoft.public.es.sqlserver he visto que alguien preguntaba cómo saber si en una tabla existe un determinado campo, para en caso de no existir, añadirlo. Así que me he decidido a responderle y de paso postearlo aquí por si le sirve a alguien más.&lt;br /&gt;&lt;br /&gt;IF NOT Exists(SELECT * FROM syscolumns AS sc INNER JOIN sysobjects AS so ON&lt;br /&gt;   sc.id=so.id AND&lt;br /&gt;   sc.name='NombreCampoNuevo' AND&lt;br /&gt;   so.name='NombreTabla')&lt;br /&gt;&lt;br /&gt;   Aquí pondríais la instrucción ALTER TABLE&lt;br /&gt;&lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2744250719628655142?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2744250719628655142/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2744250719628655142' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2744250719628655142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2744250719628655142'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/08/existe-un-campo-en-una-tabla.html' title='Existe un campo en una tabla'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-4924999101274898223</id><published>2007-08-19T11:43:00.000+02:00</published><updated>2007-08-19T12:12:41.162+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Integración CLR'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='función definida por el usuario'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Integración CLR</title><content type='html'>Para poder usar esta nueva característica de SQL Server 2005 primero debemos habilitarla, para ello tenemos 2 opciones:&lt;br /&gt;1.- Desde la Configuración del área de superficie para características. Desplegamos el nodo Motor de Base de datos, seleccionamos la opción Integración CLR marcando o desmarcando la casilla para habilitar o deshabilitar la característica.&lt;br /&gt;2.- O bien mediante una sentencia T-SQL. Para poder ejecutar con éxito esta sentencia debemos tener permisos de sysadmin y serveradmin. La consulta es esta:&lt;br /&gt;sp_configure ‘clr enabled’, 1&lt;br /&gt;GO&lt;br /&gt;RECONFIGURE&lt;br /&gt;GO&lt;br /&gt;Para deshabilitar la opción sustituiremos el 1 por un 0 (‘clr enabled’, 0)&lt;br /&gt;&lt;br /&gt;Una vez ya tenemos activada esta opción pasamos a ver las posibilidades que nos brinda.&lt;br /&gt;&lt;br /&gt;1.- Crearemos un nuevo proyecto de tipo Base de datos&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/RsgR_llU0PI/AAAAAAAAAAM/OhjYM9sXeF4/s1600-h/EnsambladosSQL2K5.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1HanhtyMG8/RsgR_llU0PI/AAAAAAAAAAM/OhjYM9sXeF4/s320/EnsambladosSQL2K5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5100346362115182834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.- Una vez creado añadiremos un elemento nuevo, en este caso vamos a añadir una función definida por el usuario y la llamaremos clrDiaSemana&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/RsgS_1lU0QI/AAAAAAAAAAU/l8qfG3JaJe4/s1600-h/clrDiaSemana.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1HanhtyMG8/RsgS_1lU0QI/AAAAAAAAAAU/l8qfG3JaJe4/s320/clrDiaSemana.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5100347465921777922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.- Agregamos funcionalidad a nuestra función:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/RsgTd1lU0RI/AAAAAAAAAAc/8SXjG0QrGYw/s1600-h/Codigodelafuncion.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1HanhtyMG8/RsgTd1lU0RI/AAAAAAAAAAc/8SXjG0QrGYw/s320/Codigodelafuncion.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5100347981317853458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La función es muy sencilla y en SQL Server ya existe una función para devolver el día de la semana según una fecha dada (DATEPART, ver los BOL para su uso).&lt;br /&gt;&lt;br /&gt;Una vez hecho esto tenemos que compilar el proyecto y una vez compilado lo implementamos (deploy), en SQL Server 2005 que es el servidor que acogerá el código .Net (en forma de ensamblado, en este caso de dll) y lo ejecutará en su interior.&lt;br /&gt;Para comprobar que tenemos el ensamblado .Net que acabamos de implementar en SQL Server 2005, abriremos Sql Management Studio y desplegaremos la subcarpeta Ensamblados de la carpeta Programación de la base de datos que especificamos como conexión.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1HanhtyMG8/RsgWGllU0SI/AAAAAAAAAAk/Y8pDXuMb3z0/s1600-h/SQLServer2005.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1HanhtyMG8/RsgWGllU0SI/AAAAAAAAAAk/Y8pDXuMb3z0/s320/SQLServer2005.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5100350880420778274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En la imagen podéis ver la manera de invocar a la función pasándole un parámetro, siempre que queramos hacer uso de la función debemos especificar a que esquema pertenece la función.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-4924999101274898223?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/4924999101274898223/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=4924999101274898223' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4924999101274898223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/4924999101274898223'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/08/integracin-clr.html' title='Integración CLR'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1HanhtyMG8/RsgR_llU0PI/AAAAAAAAAAM/OhjYM9sXeF4/s72-c/EnsambladosSQL2K5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6067349025218978719</id><published>2007-08-19T10:57:00.000+02:00</published><updated>2007-08-19T11:13:25.922+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spamming'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='MailMessage'/><category scheme='http://www.blogger.com/atom/ns#' term='Credentials'/><category scheme='http://www.blogger.com/atom/ns#' term='Mailing masivo'/><category scheme='http://www.blogger.com/atom/ns#' term='enviar mail'/><category scheme='http://www.blogger.com/atom/ns#' term='Mail Bombing'/><title type='text'>Enviar mails desde nuestra aplicación</title><content type='html'>Esta es una manera sencilla de implementar el envío de correo electrónico desde nuestra aplicación (la aplicación de ejemplo consta sólo de un formulario con un botón). &lt;br /&gt;También podríamos crear un sistema de mailing masivo, implementando un bucle que recorra los destinatarios, de esta manera podríamos enviar noticias a nuestros clientes acerca de nuevos productos en nuestra empresa, sin tener que depender de productos de terceras personas.&lt;br /&gt;&lt;br /&gt;Imports System.Net&lt;br /&gt;Imports System.Net.Mail&lt;br /&gt;Public Class Inicio&lt;br /&gt;    Private Sub Enviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enviar.Click&lt;br /&gt;        Try&lt;br /&gt;            Dim mensaje As New MailMessage()&lt;br /&gt;            Dim cliente As SmtpClient = New SmtpClient("smtp.loquesea.com")&lt;br /&gt;            Dim cuerpo As String = "Esto es una prueba de mailing usando Visual Studio 2008, desde un formulario sencillo"&lt;br /&gt;&lt;br /&gt;            'TODO: Podemos implementar un bucle que procese los registros con emails (podemos obtenerlos de una BD por ejemplo)&lt;br /&gt;            With mensaje&lt;br /&gt;                .From = New System.Net.Mail.MailAddress("francisco@nospam.com")&lt;br /&gt;                'Iremos añadiendo los distintos destinatarios de los mensajes&lt;br /&gt;                .To.Add("irma@nospam.com")&lt;br /&gt;                .Subject = "Pruebas"&lt;br /&gt;                .Body = cuerpo&lt;br /&gt;            End With&lt;br /&gt;&lt;br /&gt;            cliente.Credentials = New System.Net.NetworkCredential("francisco@nospam.com", "1234")&lt;br /&gt;            'Añadimos las credenciales&lt;br /&gt;            cliente.Credentials = CredentialCache.DefaultNetworkCredentials&lt;br /&gt;            cliente.Send(mensaje)&lt;br /&gt;            MsgBox("Mensaje enviado con éxito")&lt;br /&gt;&lt;br /&gt;            'TODO: En esta parte podríamos controlar los distintos tipos de excepciones que se pueden presentar, fallo al enviar,&lt;br /&gt;            'correo lleno, ... para ello usaríamos en lugar de exception SmtpFailedRecipientsException y con una variable de tipo&lt;br /&gt;            'SmtpStatusCode podríamos recuperar el estado y asignar un mensaje más entendible para el usuario.&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;            MsgBox(ex.Message)&lt;br /&gt;        End Try&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6067349025218978719?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6067349025218978719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6067349025218978719' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6067349025218978719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6067349025218978719'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/08/enviar-mails-desde-nuestra-aplicacin.html' title='Enviar mails desde nuestra aplicación'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-6292920625312837931</id><published>2007-06-19T00:56:00.000+02:00</published><updated>2008-09-26T20:03:28.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Three-state Checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Checkbox con 3 estados</title><content type='html'>El código que os pongo es la manera más sencilla de implementar un checkbox con 3 posibles estados en WPF:&lt;br /&gt;&lt;br /&gt;CheckBox Name="checkbox1" IsThreeState="True" IsChecked="{x:Null}"&lt;br /&gt;CheckBox en estado indeterminado&lt;br /&gt;CheckBox&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;No se porqué no puedo añadir las marcas de apertura y cierre, el caso es que si las pongo el blog quita todo el código contenido dentro de las marcas.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ahora sólo falta adornarlo con una plantilla y a usarlo en nuestras aplicaciones, pero eso ya será otro día porque ya es tarde y mañana hay que currar.&lt;br /&gt;&lt;br /&gt;En respuesta a tu petición voy a poner unas capturas que espero te sirvan de ayuda &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jEJ5MOfI/AAAAAAAAAC4/H0Uos2TY0W8/s1600-h/XAML.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5250391294866110962" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jEJ5MOfI/AAAAAAAAAC4/H0Uos2TY0W8/s320/XAML.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Ejecutando el programa y revisando los distintos estados del checkbox&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_x1HanhtyMG8/SN0jRoUEJ2I/AAAAAAAAADA/x-1W0cngJiI/s1600-h/PrimerEstado.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5250391526370191202" style="WIDTH: 314px; CURSOR: hand; HEIGHT: 187px" height="158" alt="" src="http://2.bp.blogspot.com/_x1HanhtyMG8/SN0jRoUEJ2I/AAAAAAAAADA/x-1W0cngJiI/s320/PrimerEstado.jpg" width="160" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jeHD02MI/AAAAAAAAADI/r6UgNckawd8/s1600-h/SegundoEstado.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5250391740782008514" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jeHD02MI/AAAAAAAAADI/r6UgNckawd8/s320/SegundoEstado.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jkesH5aI/AAAAAAAAADQ/yF87-8RuXWw/s1600-h/TercerEstado.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5250391850204259746" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jkesH5aI/AAAAAAAAADQ/yF87-8RuXWw/s320/TercerEstado.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-6292920625312837931?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/6292920625312837931/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=6292920625312837931' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6292920625312837931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/6292920625312837931'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/06/checkbox-con-3-estados.html' title='Checkbox con 3 estados'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x1HanhtyMG8/SN0jEJ5MOfI/AAAAAAAAAC4/H0Uos2TY0W8/s72-c/XAML.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3571601906156536871</id><published>2007-01-12T01:22:00.000+01:00</published><updated>2007-01-12T01:39:46.819+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>Año Nuevo info Nueva</title><content type='html'>Feliz Año a todos con retraso, es lo que tiene el no tener vacaciones, que te lías con el curro y se te quitan las ganas de escribir. A continuación os voy a dar unas direcciones interesantes con herramientas que pueden sernos útiles en algún momento:&lt;br /&gt;&lt;br /&gt;UTILIDADES&lt;br /&gt;- &lt;a href="http://www.giveawayoftheday.com/"&gt;http://www.giveawayoftheday.com/&lt;/a&gt; (sitio con software gratuito que cambia cada 24h)&lt;br /&gt;- &lt;a href="http://www.phoenixbit.com/products.asp?productid=imageminimizer"&gt;http://www.phoenixbit.com/products.asp?productid=imageminimizer&lt;/a&gt; (programa para cambiar el formato, calidad y tamaño de las imágenes. Puede hacer conversiones en masa)&lt;br /&gt;- &lt;a href="http://www.testmyhardware.com"&gt;http://www.testmyhardware.com&lt;/a&gt; (freeware para chequear nuestro ordenata)&lt;br /&gt;- &lt;a href="http://www.desktopsidebar.com"&gt;http://www.desktopsidebar.com&lt;/a&gt; (simula la barra lateral de Windows Vista en nuestro XP)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3571601906156536871?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3571601906156536871/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3571601906156536871' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3571601906156536871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3571601906156536871'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2007/01/ao-nuevo-info-nueva.html' title='Año Nuevo info Nueva'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-2941830093408916490</id><published>2006-12-21T00:26:00.000+01:00</published><updated>2006-12-21T00:44:29.235+01:00</updated><title type='text'>Programando con .Net Framework 3.0 en VB</title><content type='html'>Bueno el día de hoy comenzaba con interés (como un niño con zapatos nuevos) puesto que tenía que programar con las extensiones de .Net Framework 3.0 para Visual Studio 2005 (WPF, WCF). La verdad es que el día ha acabado siendo un infierno. Algo tan simple como un par de paneles separados por un split se ha convertido en algo difícil de hacer.&lt;br /&gt;&lt;br /&gt;   Me he quedado algo desilusionado puesto que la facilidad que me proporciona VS 2005 para el desarrollo se ve reducida, cierto es que por el momento con lo que estamos trabajando son versiones Beta, que contienen ciertos bugs por depurar (por ejemplo, si añadimos un control en tiempo de diseño, me he dado cuenta que si intentamos implementar código para ese control, no podemos. Tenemos que o cerrar el proyecto y volverlo a abrir o compilarlo, y al volver voilá ya podemos, en fin esperemos que se solucione).&lt;br /&gt;&lt;br /&gt;   Otra de las cosas que no entiendo es, si el Framework 3.0 es un complemento del 2.0 puesto que no lo sustituye, porqué han desaparecido en las plantillas de WPF la gran mayoría de controles del Framework 2.0 (p.ej: NumericUpDown, ...)&lt;br /&gt;&lt;br /&gt;   En fin a lo largo del día de hoy intentaré cargar un formulario mdi con un TreeView. Ya os contaré mis evoluciones con este invento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-2941830093408916490?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/2941830093408916490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=2941830093408916490' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2941830093408916490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/2941830093408916490'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2006/12/programando-con-net-framework-30-en-vb.html' title='Programando con .Net Framework 3.0 en VB'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-3050208013402599950</id><published>2006-11-24T00:32:00.000+01:00</published><updated>2006-11-24T00:52:33.928+01:00</updated><title type='text'>Cargar un Combobox con archivos de un directorio</title><content type='html'>Para cargar el combo necesitamos decirle en que directorio se encuentran los archivos que vamos a cargar. Después declaramos un array de cadenas donde almacenaremos los nombres de los archivos. En el caso de que necesitemos borrar uno de los archivos tendremos eliminar los ítems del combo y volver a recargarlo, si no hacemos esto tendremos nombres de archivos en el combo que no existen en el directorio, con lo que nos puede llevar a la confusión.&lt;br /&gt;Por último añadimos al combo los nombres de los ficheros sin la extensión y hacemos que salgan ordenados.&lt;br /&gt;&lt;br /&gt;Try&lt;br /&gt;Dim Directorio As String = Application.StartupPath &amp;amp; "\MODELOS"&lt;br /&gt;'Filtramos el tipo de archivos que queremos añadir al combo&lt;br /&gt;Dim DirFiles() As String = Directory.GetFiles(Directorio, "*.rtf")&lt;br /&gt;'Borramos los ítems para no añadir repetidos al recargarlo&lt;br /&gt;cbModelos.Items.Clear()&lt;br /&gt;For x As Integer = 0 To DirFiles.Length - 1&lt;br /&gt;'Añadir al combo&lt;br /&gt;cbModelos.Items.Add(DirFiles(x).Substring(Directorio.Length + 1, DirFiles(x).Length - Directorio.Length - 5))&lt;br /&gt;Next&lt;br /&gt;cbModelos.Sorted = True&lt;br /&gt;Catch ex as Exception&lt;br /&gt;msgbox (ex)&lt;br /&gt;End Try&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-3050208013402599950?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/3050208013402599950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=3050208013402599950' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3050208013402599950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/3050208013402599950'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2006/11/cargar-un-combobox-con-archivos-de-un.html' title='Cargar un Combobox con archivos de un directorio'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1798367132777544496.post-992175648030487210</id><published>2006-11-24T00:10:00.000+01:00</published><updated>2006-11-24T00:16:34.519+01:00</updated><title type='text'>Desarrollo de Aplicaciones</title><content type='html'>Este blog surge como respuesta a mis inquietudes en el mundo de la programación y por el momento estará enfocado al desarrollo con Visual Basic 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1798367132777544496-992175648030487210?l=frvsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frvsoft.blogspot.com/feeds/992175648030487210/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1798367132777544496&amp;postID=992175648030487210' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/992175648030487210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1798367132777544496/posts/default/992175648030487210'/><link rel='alternate' type='text/html' href='http://frvsoft.blogspot.com/2006/11/desarrollo-de-aplicaciones.html' title='Desarrollo de Aplicaciones'/><author><name>Francisco Ruiz</name><uri>http://www.blogger.com/profile/01311280257518340450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
