<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Jorge Iván Meza Martínez &#187; Bases de datos</title>
	<atom:link href="http://blog.jorgeivanmeza.com/category/bases-de-datos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jorgeivanmeza.com</link>
	<description>The Fire Within Me: &#34;knowledge will set you free&#34;</description>
	<lastBuildDate>Thu, 22 Jul 2010 06:31:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=7313</generator>
		<item>
		<title>Instalación de FreeTDS para el acceso a MSSQL desde PHP en Linux Debian 5</title>
		<link>http://blog.jorgeivanmeza.com/2009/04/instalacion-de-freetds-para-el-acceso-a-mssql-desde-php-en-linux-debian-5/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=instalacion-de-freetds-para-el-acceso-a-mssql-desde-php-en-linux-debian-5</link>
		<comments>http://blog.jorgeivanmeza.com/2009/04/instalacion-de-freetds-para-el-acceso-a-mssql-desde-php-en-linux-debian-5/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 14:25:58 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[FreeTDS]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=1660</guid>
		<description><![CDATA[Instalación de libsybdb. Descargar la última versión de libsysbdb disponible en el sitio http://packages.debian.org/stable/libs/libsybdb5. # wget http://debian.torredehanoi.org/debian/pool/main/f/freetds/libsybdb5_0.82-4_i386.deb # dpkg -i libsybdb5_0.82-4_i386.deb Instalación de FreeTDS. # apt-get install freetds-common Instalación del módulo de PHP para el acceso a bases de datos Microsoft SQL Server. # apt-get install php5-sybase Configuración del formato de fecha según se desee. [...]]]></description>
			<content:encoded><![CDATA[<h2>Instalación de libsybdb.</h2>
<p>Descargar la última versión de <span style="font-family: courier new,courier;">libsysbdb</span> disponible en el sitio <a href="http://packages.debian.org/stable/libs/libsybdb5" target="_blank">http://packages.debian.org/stable/libs/libsybdb5</a>.</p>
<p><span style="font-family: courier new,courier;"># wget http://debian.torredehanoi.org/debian/pool/main/f/freetds/libsybdb5_0.82-4_i386.deb</span></p>
<p><span style="font-family: courier new,courier;"># dpkg -i libsybdb5_0.82-4_i386.deb</span></p>
<h2>Instalación de FreeTDS.</h2>
<p><span style="font-family: courier new,courier;"># apt-get install freetds-common</span></p>
<p>Instalación del módulo de PHP para el acceso a bases de datos Microsoft SQL Server.</p>
<p><span style="font-family: courier new,courier;"># apt-get install php5-sybase</span></p>
<h2>Configuración del formato de fecha según se desee.</h2>
<p><span style="font-family: courier new,courier;"># vi /etc/freetds/locales.conf</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[default]<br />
<strong>date format = %d/%m/%Y %H:%M:%S</strong></span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[default_orig]<br />
date format = %b %d %Y %I:%M%p</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[en_US]<br />
date format = %b %d %Y %I:%M%p<br />
language = us_english<br />
char set = iso_1</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[es_ES1]<br />
date format = %b %d %Y %I:%M%p<br />
language = spanish<br />
char set = iso_1</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[pt_BR]<br />
date format = %d/%m/%Y %H:%M<br />
language = Portuguese<br />
char set = iso_1</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">[it_IT]<br />
date format = %d/%m/%Y %H:%M<br />
language = Italiano<br />
char set = iso_1</span></p>
<h2>Enlaces.</h2>
<ul>
<li>FreeTDS - Making the leap to SQL Server.<br />
<a href="http://www.freetds.org/" target="_blank">http://www.freetds.org/</a></li>
<li>FreeTDS User Guide.<br />
<a href="http://www.freetds.org/userguide/" target="_blank">http://www.freetds.org/userguide/</a></li>
<li><span style="font-family: courier new,courier;">libsybdb5</span> - libraries for connecting to MS SQL and Sybase SQL servers.<br />
<a href="http://packages.debian.org/stable/libs/libsybdb5" target="_blank">http://packages.debian.org/stable/libs/libsybdb5</a></li>
<li>API PHP5 para el acceso a bases de datos MSSQL.<br />
<a href="http://www.php.net/manual/en/book.mssql.php" target="_blank">http://www.php.net/manual/en/book.mssql.php</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/04/instalacion-de-freetds-para-el-acceso-a-mssql-desde-php-en-linux-debian-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acerca de los campos IDENTITY en MSSQL</title>
		<link>http://blog.jorgeivanmeza.com/2009/03/acerca-de-los-campos-identity-en-mssql/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=acerca-de-los-campos-identity-en-mssql</link>
		<comments>http://blog.jorgeivanmeza.com/2009/03/acerca-de-los-campos-identity-en-mssql/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 15:41:00 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[MSSQL]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=1545</guid>
		<description><![CDATA[Como insertar un registro con un valor arbitrario en un campo IDENTITY. Desactivar la revisión de los campos IDENTITY. SET IDENTITY_INSERT MiTabla ON Realizar la inserción con valores explícitos. INSERT INTO MiTabla (llave, campos) values (5, &#8216;Otros valores&#8217;) Activar nuevamente la revisión de los campos IDENTITY. SET IDENTITY_INSERT MiTabla OFF Como modificar el valor de [...]]]></description>
			<content:encoded><![CDATA[<h2>Como insertar un registro con un valor arbitrario en un campo IDENTITY.</h2>
<p>Desactivar la revisión de los campos IDENTITY.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">SET IDENTITY_INSERT <em>MiTabla</em> ON</span></p>
<p>Realizar la inserción con valores explícitos.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">INSERT INTO <em>MiTabla</em> (<em>llave</em>, <em>campos</em>) values (<em>5</em>, <em>&#8216;Otros valores&#8217;</em>)</span></p>
<p>Activar nuevamente la revisión de los campos IDENTITY.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">SET IDENTITY_INSERT <em>MiTabla</em> OFF</span></p>
<h2>Como modificar el valor de secuencia de un campo IDENTITY.</h2>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">dbcc CHECKIDENT(<em>MiTabla</em>, Reseed, <em>valor</em>)</span></p>
<p>El <span style="font-family: courier new,courier;"><em>valor</em></span> deberá corresponder con el último valor generado por el campo IDENTITY.  Es decir, si se desea que el próximo valor generado sea 10, deberá invocarse la sentencia con 9.</p>
<h2>Como desactivar un índice.</h2>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">ALTER INDEX <em>MiIndice</em> ON <em>MiTabla</em> DISABLE</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">-- Sentencias SQL que requieren del índice desactivado.<br />
</span>
</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">ALTER INDEX <em>MiIndice</em> ON <em>MiTabla</em> REBUILD</span></p>
<h2>Como desactivar un <em>trigger</em>.</h2>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">ALTER TABLE MiTabla DISABLE TRIGGER MiTrigger</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">-- Sentencias SQL que requieren del <em>trigger</em> desactivado.<br />
</span>
</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">ALTER TABLE MiTabla ENABLE TRIGGER MiTrigger</span></p>
<h2>Enlaces.</h2>
<ul>
<li>A SQL Server trick: updating the values of IDENTITY columns.<br />
<a href="http://blogs.3sharp.com/deving/archive/2005/11/04/971.aspx" target="_blank">http://blogs.3sharp.com/deving/archive/2005/11/04/971.aspx</a></li>
<li>Identidad: Cambiar valores de campo Identity.<br />
<a href="http://sql.manivesa.com/Tutoriales+SQL/General/230.aspx" target="_blank">http://sql.manivesa.com/Tutoriales+SQL/General/230.aspx</a></li>
<li>Tips for SQL Server Identity Columns.<br />
<a href="http://ryanfarley.com/blog/archive/2004/12/19/1313.aspx" target="_blank">http://ryanfarley.com/blog/archive/2004/12/19/1313.aspx</a></li>
<li>SQL SERVER - Disable Index - Enable Index - ALTER Index.<br />
<a href="http://blog.sqlauthority.com/2007/05/17/sql-server-disable-index-enable-index-alter-index/" target="_blank">http://blog.sqlauthority.com/2007/05/17/sql-server-disable-index-enable-index-alter-index/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/03/acerca-de-los-campos-identity-en-mssql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conexión a MSSQL desde Aptana utilizando el controlador JDBC de jTDS</title>
		<link>http://blog.jorgeivanmeza.com/2009/02/conexion-a-mssql-desde-aptana-utilizando-el-controlador-jdbc-de-jtds/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conexion-a-mssql-desde-aptana-utilizando-el-controlador-jdbc-de-jtds</link>
		<comments>http://blog.jorgeivanmeza.com/2009/02/conexion-a-mssql-desde-aptana-utilizando-el-controlador-jdbc-de-jtds/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 22:52:38 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[jTDS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MSSQL]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=1459</guid>
		<description><![CDATA[De la misma manera como fue posible realizar la conexión del Database Explorer de Aptana con MSSQL utilizando el controlador JDBC provisto por Microsoft, es posible utilizar el controlador JDBC provisto por el proyecto jTDS.  En algunos foros he encontrado que utilizando este controlador se pueden evitar algunos problemas que suceden en determinadas situaciones con [...]]]></description>
			<content:encoded><![CDATA[<p>De la misma manera como fue posible realizar la <a href="http://www.jorgeivanmeza.com/blog/2008/11/26/conexion-a-mssql-desde-aptana/" target="_blank">conexión del <strong>Database Explorer</strong> de <strong>Aptana</strong> con MSSQL utilizando el controlador JDBC provisto por Microsoft</a>, es posible utilizar el controlador JDBC provisto por el <a href="http://jtds.sourceforge.net/" target="_blank">proyecto jTDS</a>.  En algunos foros he encontrado que utilizando este controlador se pueden evitar algunos problemas que suceden en determinadas situaciones con el otro controlador.</p>
<p>El procedimiento es el mismo al mencionado en el <a href="http://www.jorgeivanmeza.com/blog/2008/11/26/conexion-a-mssql-desde-aptana/" target="_blank">artículo anterior</a> con las siguientes modificaciones.</p>
<ul>
<li>Descargar el controlador jTDS del <a href="http://sourceforge.net/project/showfiles.php?group_id=33291" target="_blank">sitio de SourceForge</a> del proyecto.</li>
<li>En el <strong>Database Explorer</strong> crear el controlador <span style="font-family: courier new,courier;">MSSQL jTDS</span> (o como quiera llamarlo) con la siguiente especificación.
<ul>
<li><strong>Add File</strong>: <span style="font-family: courier new,courier;">&lt;ruta&gt;/jtds-1.2.2.jar</span>.</li>
<li><strong>Driver</strong>: <span style="font-family: courier new,courier;">net.sourceforge.jtds.jdbc.Driver</span>.</li>
<li><strong>Type</strong>: <span style="font-family: courier new,courier;">Type 4</span>.</li>
</ul>
</li>
<li><strong>Connection String</strong>: <span style="font-family: courier new,courier;">jdbc:jtds:sqlserver://&lt;HOST&gt;:&lt;PORT&gt;/&lt;DBNAME&gt;</span>.  El puerto por defecto es el <span style="font-family: courier new,courier;">1433</span>.</li>
<li>El <strong>User</strong> y <strong>Password</strong> corresponden con el nombre de usuario y la contraseña de conexión.</li>
<li>El <strong>Default Schema</strong> corresponde con el nombre de la base de datos que se va a acceder.</li>
</ul>
<h3>Enlaces.</h3>
<ul>
<li>Aptana Studio.<br />
<a href="http://www.aptana.com/studio" target="_blank">http://www.aptana.com/studio</a></li>
<li>The jTDS Project.<br />
<a href="http://jtds.sourceforge.net/" target="_blank">http://jtds.sourceforge.net/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/02/conexion-a-mssql-desde-aptana-utilizando-el-controlador-jdbc-de-jtds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Luchando contra el tipo fecha de SQL Server</title>
		<link>http://blog.jorgeivanmeza.com/2009/02/luchando-contra-el-tipo-fecha-de-sql-server/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=luchando-contra-el-tipo-fecha-de-sql-server</link>
		<comments>http://blog.jorgeivanmeza.com/2009/02/luchando-contra-el-tipo-fecha-de-sql-server/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 21:01:25 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[FreeTDS]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=1355</guid>
		<description><![CDATA[Tras un nuevo round de lucha contra las fechas de MSSQL he salido por fin victorioso y he aprendido algunas cosas cuyas conclusiones voy a documentar a continuación para la posteridad. MSSQL apesta.  Le faltan muchas cosas que acostumbra uno a utilizar con bases de datos mas sencillas como MySQL.  Por ejemplo: cómo hago un [...]]]></description>
			<content:encoded><![CDATA[<p>Tras un nuevo <em>round</em> de lucha contra las fechas de MSSQL he salido por fin victorioso y he aprendido algunas cosas cuyas conclusiones voy a documentar a continuación para la posteridad.</p>
<p>MSSQL apesta.  Le faltan muchas cosas que acostumbra uno a utilizar con bases de datos mas sencillas como MySQL.  Por ejemplo: cómo hago un <span style="font-family: courier new,courier;">ENUM</span> ?  como hago un <span style="font-family: courier new,courier;">DATETIME</span> ? como hago ...?</p>
<p>La arquitectura de la conexión es un cuento un poco mas largo.  El servidor de base de datos es un Windows XP con un MSSQL 7.0 mientras que el servidor web es un Linux OpenSuse que conecta el PHP5 al motor de base de datos a través de <a href="http://www.freetds.org/" target="_blank">FreeTDS</a>.</p>
<p>Desde hace unos días para acá el formato de fecha se modificó mágicamente, ya no aparecía <span style="font-family: courier new,courier;">13/02/2009 13:13:31</span> (DMY) sino <span style="font-family: courier new,courier;">feb 13 2009 13:13</span>.  Este también fue el primer problema que tuve alguna vez con MSSQL al rededor del 2002.  En esa época lo solucioné con el modificador <span style="font-family: courier new,courier;"><a href="http://www.jorgeivanmeza.com/blog/2008/04/03/acceso-a-mssql-server-desde-php-en-un-servidor-linux/" target="_blank">SET DATEFORMAT</a></span>, sin embargo esta vez no fue suficiente.</p>
<p>Descubrí que el <span style="font-family: courier new,courier;">SET DATEFORMAT</span> sólo es útil para el ingreso de datos, es decir, le indica al motor como es el formato de las fechas que le enviamos a través de un <span style="font-family: courier new,courier;">INSERT</span> o un <span style="font-family: courier new,courier;">UPDATE</span>, pero no dice nada acerca de como se nos presentan los datos.  Lo mismo sucede con el idioma (<span style="font-family: courier new,courier;">SET LANGUAGE</span>) que es mas general aún que el formato de fecha y lo incluye.</p>
<p>Después de muchos experimentos y pruebas encontré que la presentación de las fechas podía ser manipulada desde el servidor Linux, que en este caso actua como cliente de la base de datos mediante la configureción del FreeTDS.</p>
<p>El el archivo <span style="font-family: courier new,courier;">/usr/local/freetds/etc/<a href="http://www.freetds.org/userguide/locales.htm" target="_blank">locales.conf</a></span> es necesario modificar la sección <span style="font-family: courier new,courier;">[default]</span> para incluír la siguiente línea especificando el formato de las fechas.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">date format = %d/%m/%Y %H:%M:%S</span></p>
<p>El formato de los campos es el mismo de <a href="http://www.php.net/strftime" target="_blank">strftime</a>.  Con el formato propuesto la fecha aparece como <span style="font-family: courier new,courier;">DD/MM/AAAA HH:MM:SS</span> utilizando el horario militar.  Es necesario reiniciar Apache para que el cambio sea tomado en cuenta.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">$ sudo service apache2 restart</span></p>
<p>Como mencioné anteriormente, la modificación del <span style="font-family: courier new,courier;">DATEFORMAT</span> o en su defecto del <span style="font-family: courier new,courier;">LANGUAGE</span>, nos permiten garantizar que la aplicación reciba correctamente los datos tipos fecha de manera independiente a como fue instalado el MSSQL o se haya realizado la configuración regional del servidor.  Para esto terminé agregando las siguientes líneas al constructor de la superclase de los controladores de <a href="http://kohanaphp.com/" target="_blank">Kohana</a>, es decir, en un sitio donde se pueda garantizar que siempre se ejecuta antes que cualquier otro código del sistema suceptible de acceder a la base de datos.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">$this -&gt; db = Database::instance();<br />
$this -&gt; db -&gt; query(&#8216;SET LANGUAGE spanish&#8217;);<br />
// $this -&gt; db-&gt;query(&#8216;SET DATEFORMAT dmy&#8217;);</span></p>
<p>En este punto actualizo también la información de localización y la zona horaria para que los mensajes del sistema y la hora del sistema sean las de mi región.  Muy útil, como se había <a href="http://www.jorgeivanmeza.com/blog/2008/11/28/cambio-de-locale-y-zona-horaria-en-php/" target="_blank">mencionado anteriormente</a>, cuando se comparte el servidor de <em>hosting</em>.
</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">setlocale(LC_ALL, &#8220;es_CO&#8221;);<br />
putenv(&#8220;TZ=America/Bogota&#8221;);</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/02/luchando-contra-el-tipo-fecha-de-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generando diagramas entidad-relación con SchemaSpy</title>
		<link>http://blog.jorgeivanmeza.com/2009/02/generando-diagramas-entidad-relacion-con-schemaspy/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=generando-diagramas-entidad-relacion-con-schemaspy</link>
		<comments>http://blog.jorgeivanmeza.com/2009/02/generando-diagramas-entidad-relacion-con-schemaspy/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:57:03 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=1350</guid>
		<description><![CDATA[Introducción. Dando vueltas el mes pasado por los lados de SourceForge encontré esta aplicación y no había tenido tiempo de probarla hasta el día de hoy.  Para mi satisfacción resultó ser muy interesante.  Es una aplicación desarrollada en Java que genera el diagrama Entidad-Relación de una base de datos y otras cositas, como sus desarrolladores [...]]]></description>
			<content:encoded><![CDATA[<h3>Introducción.</h3>
<div id="attachment_1351" class="wp-caption aligncenter" style="width: 435px"><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2009/02/screenshot1.png"><img class="size-full wp-image-1351" title="SchemaSpy screenshot - All relationships" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2009/02/screenshot1.png" alt="SchemaSpy screenshot - All relationships" width="425" height="364" /></a><p class="wp-caption-text">SchemaSpy screenshot - All relationships</p></div>
<p style="text-align: justify;">Dando vueltas el mes pasado por los lados de <a href="http://www.sourceforge.net/" target="_blank">SourceForge</a> encontré esta aplicación y no había tenido tiempo de probarla hasta el día de hoy.  Para mi satisfacción resultó ser muy interesante.  Es una aplicación desarrollada en Java que genera el diagrama Entidad-Relación de una base de datos y otras cositas, como sus desarrolladores la llaman, un navegador gráfico de esquemas de metadatos de una base de datos.  Puede acceder a cualquier motor de base de datos desde que se cuente con su correspondiente <em>driver</em> JDBC.</p>
<h3 style="text-align: justify;">Requerimientos.</h3>
<p style="text-align: justify;">Para utilizar la aplicación se requiere lo siguiente.</p>
<ol>
<li>Contar con <a href="http://java.sun.com/" target="_blank">Java5</a> o superior.</li>
<li>Descargar la <a href="http://sourceforge.net/project/showfiles.php?group_id=137197" target="_blank">última distribución</a> de <a href="http://schemaspy.sourceforge.net/" target="_blank">SchemSpy</a>.</li>
<li>Obtener el <em>driver</em> correspondiente a su base de datos.
<ul>
<li><a href="http://dev.mysql.com/downloads/connector/j/" target="_blank">MySQL Connector/J</a>.</li>
<li><a href="http://msdn.microsoft.com/en-us/data/aa937724.aspx" target="_blank">Microsoft SQL Server 2005 JDBC Driver</a>.</li>
<li><a href="http://jtds.sourceforge.net/" target="_blank">jTDS driver for Microsoft SQL Server</a>.</li>
<li><a href="http://jdbc.postgresql.org/" target="_blank">PostgreSQL JDBC Driver</a>.</li>
<li><a href="http://zentus.com/sqlitejdbc/" target="_blank">SQLite JDBC</a>.</li>
</ul>
</li>
</ol>
<p style="text-align: justify;">Para realizar la conexión con una base de datos Microsoft SQL Server recomiendo utilizar el <em>driver</em> de jTDS ya que el proporcionado por Microsoft me generó problemas del siguiente estilo.</p>
<pre style="margin: 0em;"><span style="font-family: courier new,courier;">Driver version is x.x.xxx.xxx
com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TypeInfo.init(Unknown Source)
        at com.microsoft.sqlserver.jdbc.StreamColumns.processBytes(Unknown Source)
        at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteQuery(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source)
        at one_con.main(one_con.java:26)</span></pre>
<h3 style="text-align: justify;">Instalación.</h3>
<p style="text-align: justify;">La instalación de la aplicación no excede el descomprimir los paquetes descargados, sin embargo su ubicación es importante.  Para esto utilicé la siguiente estructura de directorios.</p>
<ol>
<li><span style="font-family: courier new,courier;">~/Applications/SchemaSpy</span> - directorio de la aplicación.</li>
<li><span style="font-family: courier new,courier;">~/Applications/SchemaSpy/drivers</span> - controladores de acceso a la base de datos.</li>
</ol>
<p style="text-align: justify;">En la carpeta [1] se ubica el JAR de la aplicación: <span style="font-family: courier new,courier;">schemaSpy_4.1.1.jar</span>.</p>
<p style="text-align: justify;">En la carpeta [2] se ubican los JAR de los <em>drivers</em> JDBC: <span style="font-family: courier new,courier;">mysql-connector-java-5.1.7-bin.jar</span> para MySQL y <span style="font-family: courier new,courier;">jtds-1.2.2.jar</span> para MSSQL.</p>
<h3 style="text-align: justify;">Ejecución.</h3>
<p style="text-align: justify;">Para esto acostumbro a crear <em>scripts</em> del <em>shell</em> que ubico en <span style="font-family: courier new,courier;">~/Applications</span>, sin embargo lo importante es su contenido que puede invocarse directamente desde la línea de comando.</p>
<p style="text-align: justify;">Para MySQL.</p>
<p style="text-align: justify;"><span style="font-family: courier new,courier;">$ java -jar SchemaSpy/schemaSpy_4.1.1.jar -dp ~/Applications/SchemaSpy/drivers/mysql-connector-java-5.1.7-bin.jar -t mysql -host <strong>HOST</strong> -db <strong>DBNAME</strong> -u <strong>DBUSER</strong> -p <strong>DBPASS</strong> -o <strong>OUTDIR</strong></span></p>
<p style="text-align: justify;">Para MSSQL.</p>
<p style="text-align: justify;"><span style="font-family: courier new,courier;">$ java -jar SchemaSpy/schemaSpy_4.1.1.jar -dp ~/Applications/SchemaSpy/drivers/jtds-1.2.2.jar -t mssql-jtds -host <strong>HOST</strong> -port <strong>PORT</strong> -db <strong>DBNAME</strong> -s <strong>DBSCHEMA</strong> -u <strong>DBUSER</strong> -p <strong>DBPASS</strong> -o <strong>OUTDIR</strong></span></p>
<p style="text-align: justify;">Por supuesto se deben reemplazar apropiadamente las siguientes variables.</p>
<ul>
<li><strong>HOST</strong> - servidor de base de datos.</li>
<li><strong>PORT</strong> (requerido por MSSQL) - puerto de conexión al motor de base de datos.  El puerto por defecto de MSSQL es el 1433.</li>
<li><strong>DBNAME</strong> - nombre de la base de datos.</li>
<li><strong>DBSCHEMA</strong> (sólo con MSSQL) - esquema de la base de datos.  Utilizo <span style="font-family: courier new,courier;">dbo</span>.</li>
<li><strong>DBUSER</strong> - usuario de la base de datos.</li>
<li><strong>DBPASS</strong> - contraseña del usuario $DBUSER.</li>
<li><strong>OUTDIR</strong> - ubicación donde la aplicación generará los archivos resultantes.</li>
</ul>
<p>Los comandos utilizan la sintaxis del <em>shell</em> de Linux, para utilizarlos desde Windows adapte las rutas según su conveniencia, recuerde modificar los <em>slashes</em> (<span style="font-family: courier new,courier;">/</span>) por <em>backslashes</em> (<span style="font-family: courier new,courier;">\</span>).</p>
<h3>Nota acerca de la generación de gráficos.</h3>
<p>Para que se generen correctamente los gráficos de los diagramas Entidad-Relación es necesario que se cuente previamente con la librería <a href="http://www.graphviz.org/" target="_blank">Graphviz</a>.  Para instalar esta librería desde Ubuntu Linux sólo es necesario ejecutar el siguiente comando.</p>
<p><span style="font-family: courier new,courier;">$ sudo apt-get install graphviz</span></p>
<h3 style="text-align: justify;">Conclusiones.</h3>
<p style="text-align: justify;">Muy intersante esta aplicación, me gustó bastante.  Genera una buena documentación de la base de datos en formato HTML con varias secciones que se pueden navegar entre ellas.  Incluye varias perspectivas de la misma información que facilita su documentación.  Incluso siendo una presentación local, incluye <a href="http://jquery.com/" target="_blank">JQuery</a> para mejorar la usabilidad de los reportes.</p>
<h3 style="text-align: justify;">Enlaces.</h3>
<ul>
<li>SchemaSpy.<br />
<a href="http://schemaspy.sourceforge.net/" target="_blank">http://schemaspy.sourceforge.net/</a></li>
<li>Demostración de SchemaSpy.<br />
<a href="http://schemaspy.sourceforge.net/sample/" target="_blank">http://schemaspy.sourceforge.net/sample/</a></li>
<li>Java.<br />
<a href="http://java.sun.com/" target="_blank">http://java.sun.com/</a></li>
<li>MySQL Connector/J.<br />
<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank">http://dev.mysql.com/downloads/connector/j/</a></li>
<li>Microsoft SQL Server 2005 JDBC driver.<br />
<a href="http://msdn.microsoft.com/en-us/data/aa937724.aspx" target="_blank">http://msdn.microsoft.com/en-us/data/aa937724.aspx</a></li>
<li>The jTDS project.<br />
<a href="http://jtds.sourceforge.net/" target="_blank">http://jtds.sourceforge.net/</a></li>
<li>PostgreSQL JDBC driver.<br />
<a href="http://jdbc.postgresql.org/" target="_blank">http://jdbc.postgresql.org/</a></li>
<li>SQLite JDBC.<br />
<a href="http://zentus.com/sqlitejdbc/" target="_blank">http://zentus.com/sqlitejdbc/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2009/02/generando-diagramas-entidad-relacion-con-schemaspy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Conexión a MSSQL desde Aptana</title>
		<link>http://blog.jorgeivanmeza.com/2008/11/conexion-a-mssql-desde-aptana/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conexion-a-mssql-desde-aptana</link>
		<comments>http://blog.jorgeivanmeza.com/2008/11/conexion-a-mssql-desde-aptana/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 14:11:53 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MSSQL]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=929</guid>
		<description><![CDATA[Probando una nueva alternativa para tener un cliente a MSSQL desde Linux he decidido probar el cliente de bases de datos JDBC de Aptana Studio con buenos resultados. Para su configuración se deben seguir estos pasos. Tener el driver JDBC de MSSQL en algún lugar del disco duro. Abrir la perspectiva de Database Explorer.  Para [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_931" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/11/screenshot.png"><img class="size-medium wp-image-931" title="screenshot" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/11/screenshot-300x227.png" alt="Aptana's Database Manager" width="300" height="227" /></a><p class="wp-caption-text">Aptana&#39;s Database Manager</p></div>
<p>Probando una nueva alternativa para tener un <a href="http://www.jorgeivanmeza.com/blog/2008/09/02/cliente-para-mssql-desde-linux/" target="_blank">cliente a MSSQL desde Linux</a> he decidido probar el cliente de bases de datos JDBC de <a href="http://www.aptana.com/studio" target="_blank">Aptana Studio</a> con buenos resultados.</p>
<p>Para su configuración se deben seguir estos pasos.</p>
<ol>
<li>Tener el driver <a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/11/sqljdbc.jar">JDBC de MSSQL</a> en algún lugar del disco duro.</li>
<li>Abrir la perspectiva de <strong>Database Explorer</strong>.  Para hacer esto seleccione los menúes <strong>Window &gt; Open Perspective &gt; Other ... &gt; Database Explorer</strong>.</li>
<li>Haga click derecho sobre la rama <strong>Databases</strong> ubicada al lado izquierdo y seleccione la opción <strong>Add</strong>.</li>
<li>Elija el <strong>nombre de la conexión</strong> y presione el botón <strong>Next</strong>.</li>
<li>En los <strong>detalles de conexión</strong> presione el botón <strong>Add</strong>.
<ol>
<li>Especifique un nombre para el controlador.</li>
<li>Presione el botón <strong>Add File</strong> y seleccione el archivo del driver JDBC de MSSQL establecido anteriormente.</li>
<li>En la <strong>información de conexión</strong> seleccione el driver encontrado.</li>
<li>Presione el botón <strong>OK</strong>.</li>
</ol>
</li>
<li>Adecúe la cadena de conexión según sus necesidades: <span style="font-family: courier new,courier;">jdbc:sqlserver://&lt;HOST&gt;:1433;DatabaseName=&lt;DBNAME&gt;</span></li>
<li>Especifique el nombre de usuario de conexión a la base de datos (<strong>User</strong>).</li>
<li>Especifique la contraseña del usuario de conexión a la base de datos (<strong>Password</strong>).</li>
<li>Presione el botón <strong>Test Connection</strong> para verificar la información de conexión.  Realice los ajustes necesarios en caso de presentarse problemas.</li>
<li>Presione el botón <strong>Finish</strong> para terminar la configuración.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/11/conexion-a-mssql-desde-aptana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Probando Firebird Embedded con C#</title>
		<link>http://blog.jorgeivanmeza.com/2008/10/probando-firebird-embedded-con-c/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=probando-firebird-embedded-con-c</link>
		<comments>http://blog.jorgeivanmeza.com/2008/10/probando-firebird-embedded-con-c/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 05:32:26 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Firebird]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=809</guid>
		<description><![CDATA[Desde hace mucho tiempo tengo planeado desarrollar una aplicación cuya versión 0.1 desarrollé hace ya varios años en C++ y Fox Toolkit, perdida ya en el museo del olvido. La aplicación es muy sencilla.  Inicialmente son dos módulos pero la idea es agregarle después algunos otros.  El problema es que cada vez que me siento [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace mucho tiempo tengo planeado desarrollar una aplicación cuya versión 0.1 desarrollé hace ya varios años en C++ y <a href="http://www.fox-toolkit.org/" target="_blank">Fox Toolkit</a>, perdida ya en el museo del olvido.</p>
<p>La aplicación es muy sencilla.  Inicialmente son dos módulos pero la idea es agregarle después algunos otros.  El problema es que cada vez que me siento a pensar en ella termino haciendo un diseño complejo y lleno de cositas que me pondrían a estudiar.  Esto no sería malo sino fuera porque de esta manera se va a terminar cuando el tiempo tienda a infinito.</p>
<p>Por esto he cambiado mi plan.  Voy a hacer una aplicación pequeña y la voy a ir hacer creciendo, aunque esto signifique que alguna versión deba volverla a hacer desde <em>scratch</em> (cero).</p>
<p>Con respecto al lenguaje de programación había elegido Java para retomar mi estudio pero en medio de la <em>moda </em>local y temporal de .NET he decidido empezar a implementar en C#.</p>
<p>El primer reto a resolver es la escogencia de un <em>motor</em> de base de datos ya que la aplicación va a ser pequeña, me interesa que se pueda ejecutar en equipos no necesariamente robustos, no quiero despilfarrar recursos y quiero que la instalación y copia de seguridad sean fáciles: sólo copiar archivos.  Por esto he pensado en utilizar una base de datos basada en archivos o <em>embedded</em>.</p>
<p>Para Java hay varias de donde escoger, pero para .NET la oferta, al parecer, no es tan amplia.  Encontré <a href="http://www.sqlite.org/" target="_blank">SQLite</a> (ya lo he utilizado varias veces pero he tenido problemas con bloqueos) <a href="http://www.vistadb.net/" target="_blank">VistaDB</a> (comercial, no me sirve) y a <a href="http://www.codeplex.com/sharphsql" target="_blank">SharpHSQL</a> hermanita de <a href="http://hsqldb.org/" target="_blank">HSQL</a> (Java) para .NET, sin embargo no estoy seguro de cuan activo está ese proyecto.  Las mejores opciones por ahora parecen ser <a href="http://www.firebirdsql.org/manual/fbmetasecur-embedded.html" target="_blank">FireBird Embedded</a> y <a href="http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx" target="_blank">SQL Server Compact</a>, ambas prometen muchas cosas, incluyendo un bajo <em>footprint</em> ~ 2MB.</p>
<p>Para la primera prueba elegí a <a href="http://firebirdsql.org/" target="_blank">FireBird</a> ya que esa fue la primera base de datos que utilicé en un proyecto después de graduado como ingeniero y me unen a ella emotivos recuerdos <img src='http://blog.jorgeivanmeza.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Instalación.</h3>
<p>Para desarrollar una aplicación con FireBird inmerso se requieren dos recursos.</p>
<ul>
<li>La <a href="http://firebirdsql.org/index.php?op=files" target="_blank">distribución <em>embed</em></a>.  Para este caso particular estoy utilizando la versión <span style="font-family: courier new,courier;">2.1.1.17910-0_Win32</span>.</li>
<li>El <a href="http://firebirdsql.org/dotnetfirebird/download/index.html" target="_blank">FirebirdClient for .NET</a> que es el <em>Data Provider</em>.  Para esta prueba, la versión <span style="font-family: courier new,courier;">2.0.1</span>.</li>
</ul>
<p>El FirebirdClient se instala como cualquier aplicación Windows sin ninguna opción específica.  Me imagino que habrá que instalarlo también en los clientes cuando se haga el despliegue (por confirmar).</p>
<p>La distribución se debe descomprimir y mover los siguientes archivo al mismo directorio donde se encontrará el archivo ejecutable de la aplicación: <span style="font-family: courier new,courier;">&lt;ruta&gt;\bin\Debug</span> (desarrollo) o <span style="font-family: courier new,courier;">&lt;ruta&gt;\bin\Release</span> (producción).</p>
<ul>
<li><span style="text-decoration: underline;"><strong><span style="font-family: courier new,courier;">fbembed.dll</span></strong></span></li>
<li><span style="text-decoration: underline;"><strong><span style="font-family: courier new,courier;">icudt30.dll</span></strong></span></li>
<li><span style="font-family: courier new,courier;">icuin30.dll</span></li>
<li><span style="font-family: courier new,courier;">icuuc30.dll</span></li>
<li><span style="font-family: courier new,courier;">firebird.conf</span></li>
<li><span style="font-family: courier new,courier;">firebird.msg</span></li>
</ul>
<p>Para la implementación del proyecto estoy utilizando Visual C# Express 2008 y en él es necesario incluír la referencia a <span style="font-family: courier new,courier;">FirebirdSql.Data.FirebirdClient</span> instalada con el <em>Data Provider</em>.</p>
<h3>Creación de la cadena de conexión.</h3>
<p>Es fácil construír la <em>ConnectionString</em> con la ayuda del <span style="font-family: courier new,courier;">FbConnectionStringBuilder</span> de la siguiente manera.</p>
<pre>            FbConnectionStringBuilder csb = new FbConnectionStringBuilder();
            csb.ServerType = FbServerType.Embedded;
            csb.UserID     = "SYSDBA";
            csb.Password   = "masterkey";
            csb.Dialect    = 3;
            csb.Database   = @"data\database.fdb";
            csb.Charset    = "UTF8";</pre>
<p>Sólo los parámetros ServerType y Database son obligatorios, los demás son opcionales y puede encontrarse mayor información sobre ellos en <a href="http://www.firebirdsql.org/dotnetfirebird/connection-string-parameters.html" target="_blank">ConectionStringParameters</a>, también se puede encontrar mayor información acerca de los <span style="font-family: courier new,courier;">Charset</span> disponibles en <a href="http://www.destructor.de/firebird/charsets.htm" target="_blank">Firebird Character Sets and Collations</a>.</p>
<p>La ubicación de la base de datos (parámetro <span style="font-family: courier new,courier;">Database</span>) es relativo a la ubicación del archivo <span style="font-family: courier new,courier;">fembed.dll</span>, es decir, al ejecutable de la aplicación.</p>
<h3>Creación de la base de datos.</h3>
<p>Desde la misma aplicación es posible crear la base de datos (manera <a href="http://www.rae2.es/programatica" target="_blank">programática</a>) a la cual hace referencia la cadena de conexión.</p>
<pre>           FbConnection.CreateDatabase(csb.ToString());</pre>
<p>Debe tenerse en cuenta que la ruta de directorios bajo la cual se ubicará la base de datos ya debe existir previa la creación del archivo de datos, de lo contrario la creación fallará.</p>
<h3>Conexión a la base de datos.</h3>
<pre>          con = new FbConnection(csb.ToString());
          con.Open();</pre>
<h3>Verificación del estado de la conexión.</h3>
<pre>            if (con.State == System.Data.ConnectionState.Open)
                Console.WriteLine("Established");
            else
                Console.WriteLine("NOT established");</pre>
<p>Otros posibles estados definidos por <span style="font-family: courier new,courier;">ConnectionState </span>son <span style="font-family: courier new,courier;">Broken</span>, <span style="font-family: courier new,courier;">Closed</span>, <span style="font-family: courier new,courier;">Connecting</span>, <span style="font-family: courier new,courier;">Executing </span>y <span style="font-family: courier new,courier;">Fetching</span>.</p>
<h3>Verificación de la existencia de una tabla.</h3>
<pre>            FbCommand cmd = new FbCommand("SELECT COUNT(RDB$RELATION_NAME)" +
                                          "FROM RDB$RELATIONS WHERE (RDB$RELATION_NAME = 'users')" +
                                          "AND RDB$VIEW_SOURCE IS NULL", con);
            int tableCount = (int)cmd.ExecuteScalar();
            if (tableCount == 0)
                Console.WriteLine("No");
            else
                Console.WriteLine("Yes");</pre>
<p>Verifica la existencia o no de la tabla <span style="font-family: courier new,courier;">users</span> en la base de datos conectada.</p>
<h3>Ejecución de un INSERT.</h3>
<pre>            String sql = "INSERT INTO \"users\" VALUES ('" + user[0] + "', '" + user[1] + "')";
            cmd = new FbCommand(sql, con);
            cmd.ExecuteNonQuery();</pre>
<h3>Ejecución de una consulta de datos.</h3>
<pre>            String select = "SELECT username, name FROM \"users\"";
            cmd = new FbCommand(select, con);
            FbDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    String username = reader.GetString(0).Trim();
                    String name = reader.GetString(1).Trim();
                    Console.WriteLine("\t{'" + username + "', '" + name + "'}");
                }
            }
            finally
            {
                reader.Close();
            }</pre>
<h3>Finalización de la conexión.</h3>
<pre>            con.Close();</pre>
<h3>Conclusiones.</h3>
<p>Esta primera aproximación fue sencilla, práctica y funcional.  Se encuentra buena documentación del motor de base de datos y movimiento en los foros en su respecto.  A pesar de que, al menos por estas latitudes, no es muy utilizada Firebird parece ser que en otras partes si lo es.</p>
<p>Los archivos requeridos (<em>dlls</em>) ocupan 2.87MB mientras que todos los archivos, incluyendo los opcionales, ocupan 4.94MB.</p>
<p>Voy a revisar también cuan viable es utilizar el SQL Server Compact, sin embargo en los últimos días que hemos tenido un poco de contacto con SQL Server han aparecido con él algunos detalles desagradables que desde mi punto de vista de conocer poco acerca de este motor, me desaniman de utilizarlo.  Ya veremos.</p>
<p>Enlace: <a href="http://demo.jorgeivanmeza.com/NET/FirebirdEmbeddedDemo/0.1/FirebirdEmbeddedDemo1.zip" target="_blank">Aplicación de prueba - Firebird Embedded Demo 0.1</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/10/probando-firebird-embedded-con-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cliente para MSSQL desde Linux</title>
		<link>http://blog.jorgeivanmeza.com/2008/09/cliente-para-mssql-desde-linux/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cliente-para-mssql-desde-linux</link>
		<comments>http://blog.jorgeivanmeza.com/2008/09/cliente-para-mssql-desde-linux/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 16:26:15 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MSSQL]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=597</guid>
		<description><![CDATA[Uno de los proyectos que estoy desarrollando requiere de la conexión a una base de datos Microsoft SQL Server 7 cuya instancia de desarrollo se encuentra instalada en un equipo Windows XP.  Solucionado anteriormente la conexión desde el servidor web con OpenSuse, ahora el problema es como administrar la base de datos sin utilizar la [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los proyectos que estoy desarrollando requiere de la conexión a una base de datos <strong>Microsoft SQL Server 7</strong> cuya instancia de desarrollo se encuentra instalada en un equipo Windows XP.  Solucionado anteriormente la <a href="http://www.jorgeivanmeza.com/blog/2008/04/03/acceso-a-mssql-server-desde-php-en-un-servidor-linux/" target="_blank">conexión desde el servidor web con OpenSuse</a>, ahora el problema es como administrar la base de datos sin utilizar la consola que obviamente se ejecuta en Windows unicamente.</p>
<p>Para esto encontré la aplicación <a href="http://squirrel-sql.sourceforge.net/" target="_blank">SQuirrel SQL</a> que se encuentra desarrollada en Java y soporta por supuesto, conexiones con cualquier base de datos que tenga soporte por un controlador JDBC.</p>
<p>Después de instalada en mi escritorio, descargué al controlador JDBC para MSSQL y lo copié bajo el directorio <span style="font-family: courier new,courier;">/lib</span> de la aplicación.  Para mi caso: <span style="font-family: courier new,courier;">/home/jimezam/SQuirreL SQL Client/lib</span>.  Los controladores JDBC para MSSQL pueden obtenerse desde la siguiente ubicación.</p>
<p style="padding-left: 30px;"><a href="http://msdn.microsoft.com/en-us/data/aa937724.aspx" target="_blank">http://msdn.microsoft.com/en-us/data/aa937724.aspx</a></p>
<p>Al ejecutar la aplicación aparece activo el <em>Driver</em> <strong>Microsoft MSSQL Server JDBC Driver</strong> con un chulito azul.  Con esto, se crea la conexión a la base de datos: <strong>Aliases &gt; New Alias</strong>.</p>
<table border="0">
<tbody>
<tr>
<td>Name</td>
<td>Nombre de la conexión o alias a la base de datos.</td>
</tr>
<tr>
<td>Driver</td>
<td><span style="font-family: courier new,courier;">Microsoft MSSQL Server JDBC Driver</span></td>
</tr>
<tr>
<td>URL</td>
<td><span style="font-family: courier new,courier;">jdbc:sqlserver://<span style="text-decoration: underline;"><strong>HOST</strong></span>;databaseName=<span style="text-decoration: underline;"><strong>NAME</strong></span>;</span></td>
</tr>
<tr>
<td>User Name</td>
<td>Nombre del usuario de la conexión</td>
</tr>
<tr>
<td>Password</td>
<td>Contraseña de conexión</td>
</tr>
<tr>
<td>Auto logon</td>
<td>[seleccionado]</td>
</tr>
<tr>
<td>Connect at Startup</td>
<td>[seleccionado]</td>
</tr>
</tbody>
</table>
<p>Otra aplicación Java/JDBC que instalé fue <a href="http://www.thinkui.com/" target="_blank">ThinkUI SQL Client</a> (<em>free for personal</em>) la cual me había funcionado bien hasta que empecé a notarle pequeños detalles que desenamoran como el hecho de no mostrarme todos los registros retornados por una consulta sino los primeros <em>x</em>.  Espero tener una mejor experiencia con este nuevo cliente.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/09/cliente-para-mssql-desde-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle&#8217;s Server Technologies Curriculum</title>
		<link>http://blog.jorgeivanmeza.com/2008/07/oracles-server-technologies-curriculum/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=oracles-server-technologies-curriculum</link>
		<comments>http://blog.jorgeivanmeza.com/2008/07/oracles-server-technologies-curriculum/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 22:23:41 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Educación]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=403</guid>
		<description><![CDATA[Dando una vuelta por el blog de Informatics, art, graphics, desing, drawing ... blog me encontré un enlace muy interesante de Oracle, el Server Technologies Curriculum desde donde se puede obtener tutoriales en línea de algunos de los productos de Oracle. Otros sitios interesantes relacionados con la educación son Oracle University y Oracle by Example [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/07/otn_logo_small.gif"><img class="size-full wp-image-404 aligncenter" title="otn_logo_small" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2008/07/otn_logo_small.gif" alt="" width="144" height="36" /></a></p>
<p>Dando una vuelta por el blog de <a href="http://caquimblog.vox.com/library/post/server-technologies-curriculum---oracle.html" target="_blank">Informatics, art, graphics, desing, drawing ... blog</a> me encontré un enlace muy interesante de Oracle, el <a href="http://st-curriculum.oracle.com/" target="_blank"><strong>Server Technologies Curriculum</strong></a> desde donde se puede obtener tutoriales en línea de algunos de los productos de Oracle.</p>
<p>Otros sitios interesantes relacionados con la educación son <a href="http://www.oracle.com/education/chooser/selectcountry_new.html" target="_blank"><strong>Oracle University</strong></a> y <a href="http://www.oracle.com/technology/obe/start/index.html" target="_blank"><strong>Oracle by Example</strong></a> que complementan a los ya conocidos <strong><a href="http://www.oracle.com/technology/documentation/index.html" target="_blank">Documentation</a></strong>, <strong><a href="http://www.oracle.com/technology/getting-started/index.html" target="_blank">Getting Started</a></strong> y <strong><a href="http://www.oracle.com/technology/software/index.html" target="_blank">Downloads</a></strong>.</p>
<p>Oracle es una de las muchas cosas que voy a aprender cuando tenga un tiempo libre, empezando por el <a href="http://www.oracle.com/lang/es/database/Express_Edition.html" target="_blank">Express Edition</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/07/oracles-server-technologies-curriculum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autenticación local y conexiones de red de PostgreSQL 8.2 en FreeBSD 7</title>
		<link>http://blog.jorgeivanmeza.com/2008/05/autenticacion-local-y-conexiones-de-red-de-postgresql-en-freebsd/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=autenticacion-local-y-conexiones-de-red-de-postgresql-en-freebsd</link>
		<comments>http://blog.jorgeivanmeza.com/2008/05/autenticacion-local-y-conexiones-de-red-de-postgresql-en-freebsd/#comments</comments>
		<pubDate>Tue, 13 May 2008 22:47:56 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<guid isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=327</guid>
		<description><![CDATA[Autenticación local. Por defecto PostgreSQL permite que las conexiones al motor de bases de datos que se realizan de manera local se hagan sin autenticación, lo cual es poco recomendable. Este comportamiento puede modificarse siguiendo los pasos dispuestos a continuación. # vi /usr/local/pgsql/data/pg_hba.conf Modificamos el método pasándolo de trust a md5 para los orígenes de [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Autenticación local.</strong></p>
<p>Por defecto <a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a> permite que las conexiones al motor de bases de datos que se realizan de manera local se hagan sin autenticación, lo cual es poco recomendable.  Este comportamiento puede modificarse siguiendo los pasos dispuestos a continuación.</p>
<pre># vi /usr/local/pgsql/data/pg_hba.conf</pre>
<p>Modificamos el método pasándolo de <span style="font-family: courier new,courier;">trust </span>a <span style="font-family: courier new,courier;">md5</span> para los orígenes de conexión que nos interese asegurar.  El siguiente es el nuevo contenido del archivo tomando en cuenta las modificaciones realizadas para <a href="http://www.jorgeivanmeza.com/blog/2008/05/13/soporte-ssl-para-las-conexiones-de-postgresql-en-freebsd/" target="_blank">activar el soporte de SSL</a>.</p>
<pre>local      all    all                      md5
hostssl    all    all    127.0.0.1/32      md5
hostssl    all    all    ::1/128           md5</pre>
<p><strong>Habilitar el acceso a las bases de datos a través de TCP/IP.</strong></p>
<p>Nuevamente, por defecto PostgreSQL no permite la realización de conexiones cuya petición provenga de un equipo externo, es decir, diferente de <span style="font-family: courier new,courier;">localhost</span>.  Para habilitar esto se deberán seguir los pasos a continuación.</p>
<p>Es posible autorizar las conexiones desde orígenes externos nombrados, es decir, especificar con precisión desde cuales direcciones IP se habilitarán las conexiones remotas enunciándolas separadas por espacio en la variable <span style="font-family: courier new,courier;">listen_address</span> (reemplazando el <em>asterisco </em>= todos).</p>
<pre># vi /usr/local/pgsql/data/postgres.conf</pre>
<pre style="padding-left: 30px;">listen_addresses='*'</pre>
<p>Debe tenerse en cuenta que además de permitir las conexiones desde una dirección IP específica (o varias), es necesario especificar el tipo de autenticación para ese equipo/red como se realizó en la sección anterior para <em>localhost</em>.  Para permitir conexiones entrantes con soporte para SSL (<span style="font-family: courier new,courier;">hostssl</span>), a cualquier base de datos (primer <span style="font-family: courier new,courier;">all</span>), de cualquier usuario (segundo <span style="font-family: courier new,courier;">all</span>) desde cualquier equipo de la red 192.168.1.x (<span style="font-family: courier new,courier;">192.168.0.0/24</span>) utilizando contraseñas encriptadas con MD5 se deberá realizar el siguiente procedimiento.</p>
<pre># vi /usr/local/pgsql/data/postgres.conf</pre>
<pre style="padding-left: 30px;">hostssl all all 192.168.1.0/24 md5</pre>
<p>Para ajustar una mayor granularidad en la seguridad de conexión se deberán personalizar estos valores a sus requerimientos individuales.</p>
<p>Es necesario reiniciar el servicio para que se tomen en cuenta las modificaciones a la configuración recién realizadas.</p>
<p>Enlaces:</p>
<ul>
<li><a href="http://www.postgresql.org/docs/8.2/static/auth-pg-hba-conf.html" target="_blank">The pg_hba.conf file</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2008/05/autenticacion-local-y-conexiones-de-red-de-postgresql-en-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
