Bases De Datos | DevTroce.com

Post Etiquetado en ‘Bases de Datos’

  1. Solucionar error: ‘Unable to convert MySQL date/time value to System.DateTime’

    Agosto 18, 2010. Un Comentario.

    Ayer estuve trabajando con la versión 4 de MySQL y como front-end tenía a ASP.Net. Utilice como proveedor de datos MySQL Data Provider ofrecido gratuitamente por Oracle en su versión 6.2.

    Mientras iba desarrollando la app lograba la conexión y el paso de datos varchar y las variantes númericas sin ningún problema, en cierto momento necesite trabajar con datos timestamp y datetime donde fue que me apareció el siguiente error:

    Unable to convert MySQL date/time value to System.DateTime

    Leyendo la documentación me enteré cual era el problema, algunos campos de este tipo de dato estaban con valores nulos o en el caso de datetime tenia ’0000-00-00 00:00:00′. Lo cual produce el error de conversión con el Data Provider (por lo que leí también ocurre con conexiones ODBC). Continúa Leyendo Solucionar error: ‘Unable to convert MySQL date/time value to System.DateTime’

  2. SubQuery SQL: cláusula FROM

    Agosto 16, 2010. Un Comentario.

    Los SubQuery’s o SubConsultas son herramientas poderosas si las sabemos usar, y son básicamente consultas anidadas en otras consultas la cual devuelve un conjunto de valores. Prácticamente un SubQuery puede ser utilizado en cualquier expresión y cláusula ya sean SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.

    Como el tema de los SubQuery es bastante largo lo iré partiendo en pedazos agrupados por expresión (recomendación de Juan Cuevas), como lo ven en el título ahora veremos los SubQuerys aplicados en la cláusula FROM.

    Ya sabemos que la cláusula FROM sirve para identificar las tablas de donde serán proveídos los datos a retornarse, como un SubQuery retorna un conjunto de valores también Continúa Leyendo SubQuery SQL: cláusula FROM

  3. Tutorial de Replicacion Circular en MySQL

    Agosto 15, 2010. Un Comentario.

    Hace 8 meses atrás aproximadamente escribí sobre como crear una replicación de tipo Maestro/Esclavo con MySQL en la cual prometía continuar la guía escribiendo como hacer lo mismo pero de modo circular, es decir, una replicación 2-way.

    Para llevar a cabo este tutorial, deberán configurar sus bases de datos como lo decía la primer parte. La misma pueden leerla aquí: Replicacion MySQL.

    Una vez todo lo anterior este OK, detendremos Continúa Leyendo Tutorial de Replicacion Circular en MySQL

  4. Como hacer que PostgreSQL escuche conexiones desde cualquier IP

    Agosto 15, 2010. Dejanos el Primer Comentario..

    Postgre

    Postgre al contrario que MySQL, en su configuración por defecto cierra las escucha de conexiones a todas la IP excepto la local (127.0.0.1 o localhost), a veces puede ser un poco engorroso esto, especialmente si estamos trabajando con base de datos de desarrollo o pruebas. Continúa Leyendo Como hacer que PostgreSQL escuche conexiones desde cualquier IP

  5. Cambiar el nombre del usuario root en MySQL

    Agosto 15, 2010. Dejanos el Primer Comentario..

    Cuando instalamos por primera vez un motor de base de datos MySQL, éste crea un montón de configuraciones por defecto que no son precisamente las más convenientes en todos los contextos. Si la instalación será una de producción es conveniente subir los niveles de seguridad del mismo, siempre achicando las brechas para algún atacante.

    Es sabido que el usuario super administrador en MySQL se llama root, y tiene “super poderes” para hacer y deshacer lo que quiera. Con esto, al atacante le queda sólo conocer la contraseña de dicho usuario y podrá hacer lo que le venga en ganas. Un paso más que podemos hacer para complicarle las cosas a nuestro atacante es cambiar el nombre del usuario root. Continúa Leyendo Cambiar el nombre del usuario root en MySQL

  6. Como reiniciar un campo Identity en SQL Server

    Agosto 14, 2010. Un Comentario.

    Ya he escuchado muchas veces personas preguntando por como reiniciar los valores de un campo que es Identity en SQL Server. Es muy común ésta tarea en migraciones, reimplementaciones y otros.

    Existen varias maneras de lograr éste cometido, una es directa y otras “efectos colaterales” de ciertas acciones. La manera explicita de lograr sólo el reinicio de sus valores es la siguiente: Continúa Leyendo Como reiniciar un campo Identity en SQL Server

  7. Configurar Servidor Vinculado en SQL Server con MySQL

    Agosto 13, 2010. Un Comentario.

    El año pasado habíamos visto como crear un servidor vinculado en SQL Server con Firebird, en ésta oportunidad veremos como hacerlo con MySQL, son muy parecidos los pasos a seguir, pero más sencillo que con el anterior motor.

    Lo primero que necesitaremos es descargar el proveedor de datos OLE DB para MySQL (Perteneciente a Cherry Software). Ejecutamos el fichero setup.exe y seguimos los pasos correspondientes, en un punto de la instalación nos pedirá que descarguemos una librería (libmysql.dll) desde los repositorios de MySQL mismo, lo descargamos y copiamos en el path que nos indica, por lo general Continúa Leyendo Configurar Servidor Vinculado en SQL Server con MySQL

  8. Qué tipo de dato debo usar entre Decimal, Float o Real?

    Agosto 10, 2010. Dejanos el Primer Comentario..

    Hace tiempo que quería escribir sobre éste tema, ya que es muy importante considerar esto antes de comenzar a desarrollar un sistema nuevo (digo antes, porque si no lo hacen luego tendrán serios problemas).

    En mi suerte (si existe tal cosa) supe de ésto hace tiempo gracias a que un día estuve leyendo la documentación oficial sobre los tipos de datos en SQL Server, pero para desgracia de un par de compañeros laborales ellos tuvieron que descubrirlo por las malas, cuando las cosas no salían como soñaban que saldrían.

    La historia viene Continúa Leyendo Qué tipo de dato debo usar entre Decimal, Float o Real?

  9. Obtener la fecha y hora del sistema desde los motores de base de datos más utilizados

    Agosto 5, 2010. Dejanos el Primer Comentario..

    He notado que mucha gente busca éste tipo de contenido constantemente, así que decido finiquitar a los motores de base de datos más comunes en un único post, dado que también si lo hago por separado sería muy corto.

    Una cosa que me gustaría dejar bien en claro, que en la mayoría de los motores que expondré hay más de un modo de conseguir la fecha y la hora del sistema operativo huésped, pero sólo mostraré la más común.
    Vamos a lo práctico y veamos: Continúa Leyendo Obtener la fecha y hora del sistema desde los motores de base de datos más utilizados

  10. Delete o Truncate Table?

    Agosto 4, 2010. 7 Comentarios.

    Muchos se preguntan constantemente que les conviene utilizar cuando quieren vaciar completamente una tabla, si uno es más rápido que el otro, cual es más óptimo?. Prácticamente todos los motores relacionales lo soportan.

    Y si, cada uno tiene sus beneficios y contras, es cuestión de que es lo que buscamos lograr.

    Para los que desconocen que hace el Truncate Table, es similar a ejecutar una sentencia Delete sin la claúsula Where

    Continúa Leyendo Delete o Truncate Table?

  11. Analizar las consultas lentas de MySQL

    Agosto 3, 2010. Un Comentario.

    Es típico hoy día ver aplicaciones con tiempos de respuestas extremadamente lentos, no precisamente por que tiene mucha concurrencia, ni por la mala infraestructura de red, ni otros, sino por la falta de optimización de los query´s SQL. Este tipo de problemas escapa al error de sintaxis, al error lógico incluso, ya que el query cumple con su cometido, pero de una muy mala manera, técnicamente tumba el servidor por mucho tiempo y lo deja inutilizable.

    Solucionar éstos problemas no siempre es sencillo, ya que hallar que consultas producen estos problemas cuesta, y más aún Continúa Leyendo Analizar las consultas lentas de MySQL

  12. Redireccionar automáticamente en Apache con .htaccess

    Julio 27, 2010. Dejanos el Primer Comentario..

    Creo que la mayoría sabe para que sirve el fichero .htaccess en un servidor Web Apache, y lo poderoso que es si sabemos configurar éste. De hecho que es uno de los ficheros de configuración de los tantos que tiene.

    La redirección la podemos aplicar por varios motivos, de momento no queremos bajar una de las páginas del sitio, o agregar una palabra al dominio y que lleve a otro dominio automágicamente, nos puede servir para una aplicación en sí, incluso en puede facilitarnos re-direcciones desde el servidor sin tener que programarla en varias lugares de nuestra app, en fin n motivos, éstos son sólo algunos típicos casos.

    Voy a poner un ejemplo práctico y real, en devTroce el servicio de correo es gestionado por Continúa Leyendo Redireccionar automáticamente en Apache con .htaccess

  13. Ejecutar código VisualBasic .Net en Procedimientos Almacenados de SQL Server

    Julio 25, 2010. Un Comentario.

    En los últimos artículos estábamos escribiendo contenido destrozador sobre SQL Server & .Net, y me hizo pensar por que no hacer un MIX de ambas cosas en un sólo post para no perder la racha :D Esto me llevo a crear éste artículo en donde podremos escribir código en Visual Basic o CSharp .Net para ejecutarlo de un modo más integrado.

    Los procedimientos CLR nos ofrece algunas ventajas sobre T-SQL:

    • Para hacer procesos complejos no necesitamos ser gurús del T-SQL, no es una ventaja en sí pero es más facil éste camino para la mayoría de los programadores.
    • Podemos utilizar toda la potencia de la programación orientada a objetos de VB y C#
    • Manipulaciones finas, de estructuras, cadenas, criptografia, conexion a otros motores remotos, es más fácil y potente hacerlo con dotNet que T-SQL que para algunas tareas es limitado
    • El recolector de basura del CLR es mucho más eficiente y manipulable que el del motor de BD

    Continúa Leyendo Ejecutar código VisualBasic .Net en Procedimientos Almacenados de SQL Server

  14. Tips para optimizar el rendimiento de SQL Server

    Julio 18, 2010. 7 Comentarios.

    Buenas a todos una vez más… hace unos días tuvimos la visita de un grande en tecnologías Microsoft en mi trabajo, y este articulo es básicamente un resumen de algunos de los puntos más resaltantes de las recomendaciones que nos dio, para realizar sobre nuestro servidor actual, y para nuevos servidores que se quieran instalar. Sin más preámbulos, pasemos de pleno a las recomendaciones, a las cuales, les he dado un toque particular para explicarlas ;) Continúa Leyendo Tips para optimizar el rendimiento de SQL Server

  15. Instalación SQL Server 2008… Una guía más? Porqué no :)

    Julio 18, 2010. 5 Comentarios.


    Buenas a todos! Llevo bastante rato lejos de Devtroce asi que tengo un par de articulos que desempolvar… entre ellos, este…

    Mucho he encontrado en la web acerca de guías de instalación del motor de base de datos estrella que posee Microsoft, pero muchas veces debemos complementar la info de esas guías con otras. Bueno, la idea de este pequeño tutorial de instalación de SQL Server es eso, analizar el proceso de instalación de SQL Server paso a paso de principio a fin, y tratar de explicar las distintas áreas de la instalación. Continúa Leyendo Instalación SQL Server 2008… Una guía más? Porqué no :)

  16. Como programar en n-Capas con C# (Parte 5)

    Julio 14, 2010. 15 Comentarios.

    Con ésta entrega cumpliremos con la capa de Presentación, utilizaremos todo lo que hemos visto hasta ahora aplicados a una interfaz de usuario, y como lo prometí, lo veremos implementado en winForm como en webForm.

    El primer ejemplo será Desktop, crearemos un formulario con una apariencia semejante al que ven en la imagen.

    frmCliente

    Evidentemente, un sistema real no lo harán así, el botón conectar emula el comportamiento de una pantalla de login, el boton crear mandará a la BBDD los datos de la caja, Listar rellenará la grilla y Buscar By Id se encargará de devolvernos un registro a partir de lo que carguemos en la caja de Id. Otra implementación interesante sería agregarle un identity a la Continúa Leyendo Como programar en n-Capas con C# (Parte 5)

  17. Como programar en n-Capas con C# (Parte 3)

    Julio 12, 2010. 3 Comentarios.

    Esta es la tercer entrega, probablemente será la más corta pero no la última aún. El motivo de su longitud es por que es una clase que se utiliza como medio para crear la flexibilidad y portabilidad de fuentes de datos, en éste caso motores de base de datos.

    También daremos por terminada la capa de Acceso a Datos, entonces así no mezclamos el código y será más fácil seguirlo posteriormente. También pertenecerá al namespace AccesoDatos. Lo llamo conexión por que es la clase con las otras capas interactuaran en modo directo.
    Para ello creamos un objeto estático de la clase GDatos que instanciará de la clase SqlServer. Creo que ya van captando el rumbo de esto no? si crearamos otra clase por ejemplo Oracle.cs o MySQL.cs, solamente cambiariamos una linea de código, donde el objeto GDatos del tipo GDatos, sea SqlServer, Oracle u otro motor que codifiquemos. Podemos hacerlo con ODBC, OleDB para conexiones genéricas. No les parece grandioso que solo deban tocar parte de una línea de código para portar la App a cualquier otro motor de Base de Datos? :D Continúa Leyendo Como programar en n-Capas con C# (Parte 3)

  18. Como programar en n-Capas con C# – SQL Server (Parte 2)

    Julio 12, 2010. 4 Comentarios.

    Continuando con la segunda entrega de la programación en n-Capas, (la primera  lo pueden ver aqui).  Hasta el momento solo creamos una clase abstracta que servirá de padre para las demás implementaciones (1 clase por cada fabricante de motor).

    Ahora nos enfocaremos en crear una capa para conectarnos a SQL Server, si llegamos a cambiar de proveedor de base de datos en algún momento, lo único que deberíamos hacer es agregar una clase semejante a ésta con la implementación especifica para éste motor, ni siquiera debemos modificar ésta clase que veremos ahora, el unico cambio Continúa Leyendo Como programar en n-Capas con C# – SQL Server (Parte 2)

  19. Como programar en n-Capas con C# (Parte 1)

    Julio 12, 2010. 9 Comentarios.

    Este es un tema polémico del que se habla mucho y nada, digo que se habla mucho porque al buscar algo de información en Internet, uno se da cuenta, que esta plagado de sitios donde preguntan como aplicar programación en 3 capas, o N-Capas, pero en muy pocos lugares se responde con algo cierto y concreto, la mayoría hacen referencia a libros gordos que tardarías en leer semanas (no estoy en contra de la lectura, es un proceso largo nada más y casi todos buscamos aprenderlo un poco más rápido). Este artículo también será bastante largo y me aventuro a decir que me tomará varias noches escribirlo completamente, pero no será nada comparado con un libro con un lomo de 15 centímetros :P

    La primer gran confusión que noto, es que la mayoría no sabe diferenciar entre los conceptos Continúa Leyendo Como programar en n-Capas con C# (Parte 1)

  20. Exportar datos de MySQL a ficheros CSV

    Junio 28, 2010. Dejanos el Primer Comentario..

    La tarea de importar y exportar datos a una base de datos es tan común y tan útil que casi todos los motores de hoy día traen su propia herramienta para hacer eso, ya no es necesario ir programando utilidades de este tipo. Estas pequeñas herramientas nos ahorraran bastante tiempo y dinero especialmente.

    Exportar los datos de una tabla o varias tablas a un fichero .CSV (fichero con valores separados por comas) es tan sencillo que básicamente son unos parámetros  más a nuestro query de SELECT.

    Además que es tan flexible y nos permite elegir Continúa Leyendo Exportar datos de MySQL a ficheros CSV

  21. Setear parametros con valores nulos en Java

    Junio 7, 2010. Dejanos el Primer Comentario..

    Muchas veces en nuestra base de datos tenemos procedimientos almacenad0s que reciben parámetros, y alguno de éstos debe ser enviado como nulo (Null/NullDB). En java ya sea que estemos utilizando un CallableStatement o PrepareStatement podemos enviar de un modo bastante elegante.

    Tradicionalemente enviamos de este modo los parametros:

    PreparedStatement ps = conn.prepareStatement("{ call NuestroSP (?, ?) }");
    ps.setInt(1, 3);
    ps.setString(1, "devtroce");
    

    Ahora si deseamos enviar el primer parámetro con valor nulo, podemos hacer del siguiente Continúa Leyendo Setear parametros con valores nulos en Java

  22. Importar datos de MS Excel 2007 [.xlsx] a SQL Server

    Junio 5, 2010. Dejanos el Primer Comentario..

    Importar datos de las planillas electrónicas MS Excel con el formato de la versión 2007 en adelante (.xlsx) en SQL Server en sus versiones 2005 y 2008 sin el Service Pack 1 como mínimo instalado, notarán que no se puede realizar por el típico proceso, ya que no existe un proveedor ODBC para ésta versión.

    No es un proceso complejo, y por suerte como nos tiene acostumbrados Microsoft con sus productos, es muy sencilla esta tarea. Iremos viendo unas capturas de pantalla para hacer más sencillo también el post.

    Tenemos que elegir el proveedor de datos como Microsoft Office 12.0 Access Database Engine. En caso de no tener instalado lo puede descargar Continúa Leyendo Importar datos de MS Excel 2007 [.xlsx] a SQL Server

  23. VoltDB, la nueva generación de bases de datos OLTP

    Junio 1, 2010. Un Comentario.

    Hace poco vio la luz un nuevo DBMS, en el año 2009, llamado VoltDB, y su creador es nada más y nada menos Mike Stonebraker quien trabajó en el desarrollo de PostgreSQL e Ingres. Es un motor que promete bastante, y trae ideas bastantes nuevas, personalmente por su características no me parece que reemplazará a los tradicionales y robustos moteres empresariales que tenemos hoy día en el mercado, pero si me parece una muy buena alternativa para los servicios que requieren alta disponibilidad de los mismos no tanto alta fiabilidad de datos.

    Quienes pueden requerir este tipo de productos? Hoy día servicios como facebook, twitter y otros requieren de súper velocidades de respuestas ya que son tan populares y deben ser rápidos éstos en responder.

    Este motor se enfoca mucho a trabajar en memoria constante, y no tanto en disco físico. Además que prometen ser una 50 veces más rápido que otros motores, pudiendo procesar unas 53.000 transacciones por segundo, contra las Continúa Leyendo VoltDB, la nueva generación de bases de datos OLTP

  24. Capturar Output de los Procedimientos Almacenados de SQL Server con Java

    Mayo 30, 2010. 4 Comentarios.

    A parte de un conjunto de datos que puede devolver un Stored Procedure en SQL Server, también podemos hacer que ellos devuelvan uno o varios valores escalares, un caso tipico es cuando insertamos un registro y la tabla tenia una PK Identity, si queremos recuperar esa clave podemos usar este mecanismo, aunque no necesariamente se reduce a esa posibilidad, con un poco de imaginación podemos darle usos en otras situaciones. El ejemplo que muestro esta construido con SQL Server, pero es funcional con otros motores que manejan el retorno de valores escalares en sus procedimientos almacenados..

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    CREATE PROCEDURE InsCliente
       @IdCliente INT OUTPUT,
       @Nombre VARCHAR(25),
       @Ruc VARCHAR(25)
    AS
    BEGIN
       -- Insertamos un registro
       INSERT INTO Cliente VALUES (@Nombre, @Ruc);
       -- Recuperamos el Id que se genero
       SELECT @IdCliente = @@Identity;
    END

    Tomando en cuenta este procedimiento que Continúa Leyendo Capturar Output de los Procedimientos Almacenados de SQL Server con Java

  25. Cambiar el propietario de un objeto en SQL Server

    Mayo 13, 2010. 4 Comentarios.

    En SQL Server todos los objetos siempre tienen un dueño (owner) el cual tiene poder absoluto sobre el mismo, pero eso no limita que otros usuarios tengan poder sobre un objeto dado, tendrán permisos si el dueño o un usuario con poder de otorgar permisos (otorgado originalmente por el dueño o cualquier usuario que pertenezca a las funciones fijas de base de datos db_owner o a las funciones fijas de base de datos db_ddladmindb_securityadmin).

    Hay momentos en donde lo que buscamos es cambiar directamente de dueño un objeto, esto puede darse por varios motivos, eliminación del dueño (hay que tener que tener cuidado con esto o eliminaremos todos lo objetos que pertenezcan al dueño), asignación rápida de permisos completos de un usuario sobre el objeto, con respecto a si aplicamos este procedimiento por este motivo, debemos tener muy en cuenta que todos los permisos que tenía en propietario original, serán revocados, por lo Continúa Leyendo Cambiar el propietario de un objeto en SQL Server

  26. Crear backup del Transaction Log y reducir su tamaño en SQL Server

    Mayo 6, 2010. Dejanos el Primer Comentario..

    Uno de los típicos problemas que aquejan a los DBA de SQL Server es el crecimiento montruoso del mismo, muchas veces ocupa varias veces más espacio que la propia base de datos. Este a su vez cumple un rol muy importante para este motor, no está allí por sólo capricho :P . Es el modo que el motor puede garantizar la integridad de los datos, toda transacción primeramente se escribe allí, y si y sólo sí el usuario confirma (COMMIT TRANSACTION) la operación pasa a la base de datos, también le sirve contra apagones, cortes de red o cualquier otro evento similar y así poder dejar los datos como estaban originalmente.

    Existen tres modos de recuperación del log: Completa, Registro Masivo y Simple (No entraremos en detalle de esto por hoy).

    La manera más típica de reducir el tamaño del Log es haciendo un Backup del mismo, tarea que recomiendo sea ejecutada períodicamente y en lo posible tener armado un plan de mantenimiento  con ejecuciones automáticas.

    1
    2
    3
    4
    5
    6
    
    BACKUP LOG [Devtroce] 
     
    TO DISK = N'C:\Backup\Devtroce.bak'
    WITH NOFORMAT, NOINIT,
    NAME = N'Devtroce-Transaction Log Backup',
    SKIP, NOREWIND, NOUNLOAD, STATS = 10;

    o bien, Continúa Leyendo Crear backup del Transaction Log y reducir su tamaño en SQL Server

  27. Importar datos de un fichero CSV en SQL Server

    Abril 24, 2010. Un Comentario.

    Muchas veces en la práctica vamos a encontrarnos con la siguiente situación, nos envían de algún lugar datos en un fichero CSV (Fichero que tiene valores separados por comas), y necesitemos almacenar estos en nuestra base de datos, los motivos pueden ser varios, importación de datos de alguna base datos que no solamente puede ser SQL Server mismo, algún programa externo a nosotros genera este tipo de ficheros, por cuestión de interoperabilidad con otras empresas se decide utilizar este mecanismo, en fin, cualquier motivo resulta válido para el caso.

    El punto más bien es utilizar un mecanismo más rápido de inserción de los mismos a nuestra BD, que tener que programar una aplicación que haga este trabajo. SQL Server tiene su propia herramienta que hace esto por nosotros, se lo puede hacer de manera gráfica como por línea de comandos. Evidentemente no veremos el modo gráfico porque es demasiado intuitivo que no requiere explicación, pero si sería interesante conocer como esa pantalla gráfica hace “por debajo” este trabajo, que nosotros mismo podemos hacerlo.

    El comando BULK nos ayudara, veamos un ejemplo práctico. Creemos la siguiente tabla:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    USE BD
    CREATE TABLE CSVPersona
    (
    IdPersona INT,
    Nombre VARCHAR(40),
    Apellidos VARCHAR(40),
    Nacimiento DATETIME
    );
    GO

    Luego necesitamos crear Continúa Leyendo Importar datos de un fichero CSV en SQL Server

  28. Cargar datos de una base de datos con JSP

    Abril 24, 2010. Dejanos el Primer Comentario..

    Hoy escribiremos por primera vez sobre JSP, Java Server Page. La evolución de los Servelts de Java, la cual se diferencia de su antecesor que ya no necesita ser compilado antes de deployarlo, sino este proceso se realiza por el servidor cuando el usuario lo solicita.

    Trabajaremos con una base de datos MySQL, ya que es la más popular hasta hoy día para la plataforma web, de igual modo el ejemplo servirá para otros motores, solo deberíamos cambiar la capa de conexión por otra.

    Trabajar con JSP y Netbeans es mucho más sencillo que con eclipse pero de igual modo lo haremos con este ultimo, personalmente he utilizado la versión Galileo para el ejemplo.

    El ejemplo como siempre será lo más sencillo posible, en la BD necesitaremos crear una tabla básica de usuarios, que tengan nombres, los cuales mostraremos un listado de los mismos dentro de un Table HTML.

    Una vez creado ésta tabla, que doy por hecho que lo pueden hacer, procederemos a crear nuestro proyecto Web. Una vez abierto nuestro IDE, buscaremos en el menú:

    Archivo --> Nuevo --> Dinamic Web Proyect

    Alli seteamos la configuración de desarollo, le colocamos el n0mbre al proyecto, yo le llamado JSPTroce, la versión del modulo que puede ser sin problemas el 2.4 o 2.5.

    Siguiente --> Siguiente --> Finalizar

    Una vez hecho esto, necesitaremos el driver JDBC para conectarnos a MySQL, la cual pueden descargar desde el sitio oficial. Más adelante también necesitaremos tener instalado el servidor o contenedor Web Apache Tomcat, preferentemente la versión 6, aunque debería funcionar sin ningún problema en la 5.5 el mismo lo descargan de aqui.

    Una vez instalado el servidor, podemos copiar Continúa Leyendo Cargar datos de una base de datos con JSP

  29. Utilizar precisión de milisegundos en MySQL

    Abril 12, 2010. Un Comentario.

    Almacenar en campos de tipo DateTime, Time o Timestamp con una precisión fina en MySQL es un tanto difícil, ya que lamentablemente hasta la fecha aún no hay soporte para tal efecto. Se pueden formatear el tiempo pero si la fuente del tiempo es uno de estos campos en MySQL veríamos los milisegundos con valores cero.

    En la lista de petición de desarrollo de MySQL hace más de 5 años que vienen pidiendo esto, y no hacen caso (el motivo lo desconozco) como pueden ver aqui (inglés requerido). Esto provocó distintas reacciones, algunos Continúa Leyendo Utilizar precisión de milisegundos en MySQL

  30. Conectar y Consultar a SQL Server desde PHP sobre Windows

    Abril 5, 2010. Dejanos el Primer Comentario..

    Mucho de este lenguaje no he escrito, uno de los motivos es que no trabajo con el hoy día pero siempre me pareció un lenguaje muy interesante y sencillo de entender su sintaxis. Anteriormente hemos visto un ejemplo muy sencillo de concatenación de variables string, hoy haremos algo más interesante: Nos conectaremos a SQL Server 2008 (también funciona con otras versiones) y haremos una consulta sencilla y lo mostraremos en el browser.

    Todo esto lo haremos bajo un servidor web Apache instalado en Windows, las fuentes del php no cambiarían si lo usaramos en otro Sistema Operativo, pero si la configuración del PHP en sí sobre apache (prometo verlo más adelante este tema).

    Para llevar a cabo este ejemplo doy por hecho que tienen instalado el servidor Web Apache y los módulos para PHP, veremos una pequeña configuración básica nada más. Lo primero que necesitaremos es descargarnos las “.dll” que permitirán interactuar con nuestro motor de bases de datos, ellas podemos descargarlas desde aquí. Normalmente en nuestro directorio donde se encuentra instalado el PHP, existe una carpeta llamada “ext”, en ella debemos copiar el fichero:

    php_mssql.dll

    La cual se encuentra en las carpetas que acabamos de descargar en un directorio con el mismo nombre. Luego en la raíz de la instalación  Continúa Leyendo Conectar y Consultar a SQL Server desde PHP sobre Windows

  31. Tutorial de configuración de Servidores de Replicación en SQL Server

    Marzo 29, 2010. Dejanos el Primer Comentario..

    Es muy típico hoy día necesitar de una alta disponibilidad de los datos de nuestros sistemas informáticos, o distribuirlos a lugares remotos constantemente. Normalmente no es una terea muy sencilla de manejar pero SQL Server en cierto modo nos facilita bastante la vida laboral ya que trae características para estos objetivos, nos ayudará a transaportar nuestros datos de manera integra y segura.

    El ambiente necesario es de 2 o más servidores para crear la replicación. Los objetos o conceptos que debemos manejar son seis:

    1. Publicador
    2. Distribuidor
    3. Suscriptor
    4. Publicación
    5. Articulo
    6. Suscripción

    El publicador se encuentra alojado en un servidor y se encarga de poner a disposición los datos, es pocas palabras, publica lo que se necesita replicar, en sus publicaciones pueden existir varios Continúa Leyendo Tutorial de configuración de Servidores de Replicación en SQL Server

  32. Manejar Transacciones en la Base de Datos desde C# .Net y Visual Basic .Net

    Marzo 29, 2010. Dejanos el Primer Comentario..

    El concepto de transacción de bases de datos no es para nada nuevo, pero eso no significa que no fuera a ser válido aún, de hecho sigue siendo tan vital como cuando tuvo origen. Tampoco es un concepto dificil de comprender, pero no lo voy a explicar detalladamente, para ello les dejo los enlaces que explican en cristiano su siginificado.

    Wiki: http://es.wikipedia.org/wiki/Transacción_(base_de_datos)

    Wapedia: http://wapedia.mobi/es/Transacción_(informática)

    El código que expondré genéricamente debe funcionar en cualquier SGDB decente, aunque para el ejemplo práctico utilizaré SQL Server. Continúa Leyendo Manejar Transacciones en la Base de Datos desde C# .Net y Visual Basic .Net

  33. Verificar puerto de escucha del servicio de MS Sql Server 2008

    Marzo 26, 2010. Un Comentario.

    Hace tiempo tuve un problemita con netBeans 6.8 al querer crear mis clases Entity apartir de mis tablas de bases de datos, y al pasarle los parametros de conexion me daba un error que me sugería que verifique que si el puerto estaba aceptando conexiones tcp/ip y todas esas cosas, si mal no recuerdo el puerto de escucha del servicio del motor de base de datos sql server es el 1433, pero me lleve una sorpresa cuando descubrí este stored procedure que entre otras muchas cosas mas te muestra en que puerto esta escuchando el servicio del motor de bases de datos

    1
    2
    3
    
    Use nombre_base_datos
    Go
    Xp_readerrorlog

    Este procedimiento almacenado extendido devuelve el contenido del archivo de registro de errores.

  34. Separar texto en pl/sql

    Marzo 25, 2010. 2 Comentarios.

    Buenas a todos, con este codigo podemos separar textos, si es que tenemos en una columna de una tabla por ejemplo el nombre completo de la persona, como tambien pùede ser una persona juridica, aqui va el script, query o como quieran llamarlo.
    Primeramente declaro las variables primer_espacio y segundo_espacio para ver en que posicion se encuentran los espacios entre cada palabra
    luego las variables para primer nombre, segundo nombre, primer apellido y segundo apellido, para el nombre de las empresas usaremos la variable de primer nombre, también utilizo 3 cursores para ir leyendo, uno para los nombres, otro para los apellidos y otro para las personas juridicas. Los nombres se encuentran en una columna separados por un espacio en blanco y los apellidos también en otra columna separados por un espacio en blanco, lo que hago es abrir y recorrer cada cursor, y en cada lectura del cursor busco los espacios en blanco de cada linea leída, entonces, cuando recorremos el cursor de nombres, busco la posición del espacio en blanco de la cadena, si la posición > 0 entonces quiere decir que al menos hay 2 nombres, entonces el primer nombre seria hasta la posición del primer espacio en blanco – 1 y el segundo nombre seria desde la posición del primer espacio en blanco + 1, de esa manera voy guardando los valores leidos en primer_nombre y segundo_nombre, luego de haber leido inserto los valores separados en una tabla , ya con columnas separadas, es decir, primer nombre, segundo nombre, primer apellido y segundo apellido
    Lo mismo hago con el cursor de apellidos, pero en vez de insertar , actualizo las columnas de primer apellido y segundo apellido.
    Lo mismo ocurre con el 3er cursor, solamente que aca no Continúa Leyendo Separar texto en pl/sql

  35. Solucionar error Can’t create table ‘???’ (errno: 150) en MySQL

    Marzo 24, 2010. Un Comentario.

    Hace un momento me ha tocado resolver un problema que ocurría en uno de nuestros motores de MySQL, se daba cuando intentaba crear una llave foránea y el error era semejante al que sigue, donde ??? representa el nombre de la tabla:

    Can't create table '???' (errno: 150)

    Se estaba volviendo algo molesto y tenía una idea de lo que podía ser, un problema con la FK de las tablas, pero no encontraba que específicamente. Leyendo un poco la documentación encontré y aprendí que se puede deber principalmente a 3 situaciones: Continúa Leyendo Solucionar error Can’t create table ‘???’ (errno: 150) en MySQL

  36. Operaciones de fechas y horas en MySQL

    Marzo 15, 2010. Dejanos el Primer Comentario..

    Es tan común necesitar realizar operaciones de cualquier tipo con las fechas y horas de los campos de nuestras bases de datos, sumar, restar, sustraer una porción de la misma, etc.. Una de las tareas más tediosas con ellas suele ser el GMT –aunque esto no tocaremos hoy lo comento, veremos netamente algunas operaciones comunes–. Continúa Leyendo Operaciones de fechas y horas en MySQL

  37. Insert or Update [FIREBIRD]

    Marzo 11, 2010. 2 Comentarios.

    Recién hemos visto como hacer ésta tarea en MySQL y fue bastante sencillo, en el caso de Firebird es aún mucho más sencilla y es la implementación que más me ha gustado :D Hay que tener en cuenta que Firebird soporta ésta sintaxis recién a partir de la versión 2.1.

    Básicamente consiste en insertar 1 registro si no existe o actualizarlo en caso contrario sin necesidad de hacer manualmente la validación. Algunos factores a tener en cuenta son que no se puede la sentencia OLD en los triggers, además no es necesario que contenga todas la columnas de la tabla.

    Además se tiene la posibilidad de hacer el “merge” basado en cualquiera de las columnas, no está limitado a las PK o Unique Index (estos pequeños detalles hizo que me guste su implementación además que Continúa Leyendo Insert or Update [FIREBIRD]

  38. Insert or Update [MySQL]

    Marzo 11, 2010. Dejanos el Primer Comentario..

    En el día a día laboral cuando trabajamos con bases de datos nos encontramos con tareas repetitivas en donde debemos hacer altas o modificaciones en los registros de nuestras bases de datos, normalmente para decidir que acción llevar a cabo primeramente nos tomamos la molestia de hacer una consulta a la fuente, y verificamos si no existe lo que buscábamos procedemos por el INSERT y si existe UPDATE. Esto podemos hacerlo de manera mucho más eficiente, rápida y con menos código en ambos lados (BD y App) de distintas maneras en las distintas bases de datos del mercado (al menos en las más difundidas MySQL, Firebird, SQL Server [2008], Oracle, etc). En esta entrada lo implementaremos en MySQL aunque espero en los próximos días hacer las entregas de los otros motores.

    Ya en éste motor específico tenemos 2 sentencias que nos pueden ayudar con ésta tarea: INSERT ON DUPLICATE KEY UPDATE o también REPLACE. Personalmente siempre opto por la primer opción ya que éste lo que hace por “debajo” es insertar si no existe o actualizar si existe (justo lo que queremos) en cambio la segunda opción inserta si no existe, pero si se da el caso contrario elimina la fila y vuelve a insertar, esto supone un problema si Continúa Leyendo Insert or Update [MySQL]

  39. Ejecutar Procedimientos Almacenados en MySQL con C#

    Febrero 19, 2010. Dejanos el Primer Comentario..

    Anteriormente veníamos viendo como ejecutar procedimientos almacenados en otros lenguajes, hoy veremos un lo mismo pero en C# y trabajaremos una base de datos MySQL, aunque también el ejemplo sirve para usarlo con otros motores, es solo cuestión de cambiar los objetos command y connection, por los proveedores para esos motores, pero la lógica sería la misma.

    Para el ejemplo supongo que ya tienen  armados los objetos en la base de datos, como la tabla, el procedimiento con sus parámetros de entrada y demás, así solo me centraré en el código de la aplicación.

    La primer clase correspondería a la de conexión y la segunda a la clase que tiene el Continúa Leyendo Ejecutar Procedimientos Almacenados en MySQL con C#

  40. Realizar Consultas Paginadas en SQL Server, MySQL, Oracle & PostgreSQL

    Febrero 5, 2010. Un Comentario.

    Paginar nuestras consultas resulta que siempre aligera más la carga del motor de base de datos, siempre y cuando éste tenga los índices donde corresponden y no en cualquier columna o peor aun, no tener indices, ya que sólo se transmiten los datos a mostrarse en el momento, ésta característica se siente mucho mejor cuando estamos trabajando con aplicaciones web, u otras que corran sobre una red de baja velocidad o alta concurrencia. De ahí su gran implementación en los últimos tiempos.

    Para lograrlo necesitamos de la ayuda de nuestro motor de base de datos, ésta vez veremos el ejemplo en 4 motores muy populares, SQL Server, Oracle, MySQL y PostgreSQL. Personalmente creo que es más sencillo implementarlo en MySQL y PostgreSQL, seguido de Oracle y SQL Server. Aunque esto no hace que Continúa Leyendo Realizar Consultas Paginadas en SQL Server, MySQL, Oracle & PostgreSQL

  41. Leer datos de una base de datos con java

    Febrero 1, 2010. Dejanos el Primer Comentario..

    Hace tiempo vimos como ejecutar un procedimiento almacenado desde Java en una base de datos, en esta oportunidad veremos algo semejante, cargaremos datos de la base de datos a nuestra aplicación con JDBC mediando un ResultSet. Este ejemplo nos servirá para cargar nuestros formularios ya sea de escritorio, consola o web mismo si no usamos ningún framework que nos ayude.

    Para este caso en sí la conexión a la BD la hacemos a Firebird, pero es funcional con cualquier otro motor siempre y cuando cambiemos la cadena de conexión y el driver JDBC. Continúa Leyendo Leer datos de una base de datos con java

  42. Replicacion de datos en Firebird

    Enero 29, 2010. 3 Comentarios.

    Un método relativamente barato de conseguir replicación de una base de datos Firebird es crear una shadow en un disco externo de red local. Nos protege contra desastres en el disco donde se aloja la base de datos principal, aunque, evidentemente, si borramos datos de la principal, automáticamente se borrarán también de la copia “shadow”, por lo que este es un sistema válido únicamente contra daños físicos, incendios, robos, etc.

    Los requisitos necesarios son:

    • Equipo Servidor con Linux y Firebird
    • Disco externo de red local (Ethernet)

    Aunque las pruebas realizadas han sido en un servidor con Suse Linux 9.3 y Firebird 1.5, sirve cualquier distribución Linux. La base de datos (basedatosprueba.fdb) está alojada en el directorio /home/datos/ del mismo servidor. El disco externo es de conexión por red (Ethernet). Ambos están conectados a un router, aunque sirven igualmente un switch o un hub. Para los ejemplos se usan Continúa Leyendo Replicacion de datos en Firebird

  43. Guardar imágenes en la Base de Datos desde C#

    Enero 24, 2010. 12 Comentarios.

    Esto que veremos como hacer, se aplica a cualquier base de datos que soporte el tipo de dato BLOB o equivalente, aunque el ejemplo estará centrado en un motor especifico, el PostgreSQL ya que es uno de los motores que mejor tiempo de respuesta ofrece al trabajar con imágenes, hablo una vez que tenemos más del millon de imagenes, esto que digo está basado en una prueba mía con SQL Server, MySQL y Oracle XE. Por eso podría la mejor opción si necesitamos almacenar muchas imágenes y luego tener la facilidad que buscarlas con rápidez.

    En éste ejemplo lo insertaremos desde C# .Net, pero primeramente debe existir la tabla que almacenará la imagen, y su tipo de dato debe ser BLOB (Binary Long, o campo binario largo). Las imagénes necesitamos convertirlas al binario para almacenarlas, veremos como tomar una imagen que está en algún directorio y lo almacenamos, también incluye el método para volver a pasarla a imágen por si necesitamos volver a visualizarla, pero Continúa Leyendo Guardar imágenes en la Base de Datos desde C#

  44. Funciones en PostgreSQL

    Enero 20, 2010. Dejanos el Primer Comentario..

    En PostgreSQL —para los usuarios que vienen de otros motores— no existe el concepto de Procedimientos Almacenados o Stored Procedures, simplemente existen las Funciones que hacen el papel de ambas cosas en otros motores más populares.

    Otras de sus particularidades en PLPG/SQL es que éstos soportan sobrecarga (como en la orientación a objetos), es decir, pueden existir más de una función con el mismo nombre (a diferencia del resto) y ser diferenciados por la cantidad y tipos de parámetros recibidos. Vale recordar que este motor es sensible a las mayúsculas, cosa que a los que llegan recién les produce varios inconvenientes.

    Básicamente lo que veremos en este post, es 3 ejemplos de funciones, los que retornan valores, los que no. Lo escribiremos en plpgsql y sql estándar también. Existen otros factores que debemos considerar, como Continúa Leyendo Funciones en PostgreSQL

  45. Manejo de Errores en Oracle

    Enero 20, 2010. Dejanos el Primer Comentario..

    En PL/SQL tenemos mecanismos para manejar las excepciones, que son generadas a partir de situaciones de error o advertencias. Estos son administrados por bloques relativamente sencillos de utilizarlos, la sintaxis más común es la siguiente:
    Continúa Leyendo Manejo de Errores en Oracle

  46. Crear e Invocar funciones (UDF) en SQL Server

    Enero 18, 2010. Dejanos el Primer Comentario..

    Las siglas UDF viene del inglés User Defined Functions (Funciones Definidas por el Usuario), esto quiere decir que podemos crear funciones personalizadas para hacer un determinado proceso que utilizaremos en más de una ocasión, luego tan sólo deberíamos invocarlo para volver a utilizarlo. En Transact-SQL existen 3 tipos de funciones:

    1. Funciones Escalares
    2. Funciones en línea
    3. Funciones en línea de múltiples sentencias

    Para ver en acción esto, crearemos una base de datos (versión 2008 por el tipo de dato date que no es soportada en versiones anteriores) con una tabla y datos de ejemplo Continúa Leyendo Crear e Invocar funciones (UDF) en SQL Server

  47. Cadena de Conexión de SQL Server

    Enero 18, 2010. Dejanos el Primer Comentario..

    Siguiendo la temática de las cadena de conexión de los motores para los distintos lenguajes, ya hemos visto para Oracle, ahora veremos para SQL Server. Continúa Leyendo Cadena de Conexión de SQL Server

  48. Ejecutar procedimiento almacenado desde Java (JDBC)

    Enero 17, 2010. 3 Comentarios.

    En Java invocar a un procedimiento almacenado que no devuelve valores es bastante sencillo hacerlo desde JDBC, funciona de la misma manera que con cualquier base de datos, solo es cuestión de cambiar la cadena de conexión y el driver, el resto va igual.

    En el ejemplo veremos con MySQL, pero como vengo diciendo cambien los 2 factores y podrán usarlo con cualquier otro motor de base de datos. Continúa Leyendo Ejecutar procedimiento almacenado desde Java (JDBC)

  49. Capturar error en SQL Server y volver a Lanzarlo

    Enero 13, 2010. Dejanos el Primer Comentario..

    Cuando trabajamos con SQL Server con aplicaciones clientes escritas en el lenguaje de programación que sea y usamos transacciones controladas con try..catch, podríamos llegar tener problemas si no lo hacemos del modo correcto.

    Me explico mejor con un ejemplo práctico, supongamos que tenemos una aplicación de facturación y queremos eliminar una factura, para salvaguardar la integridad de nuestros datos lo más lógico es crear una transacción dentro del procedimiento que hará la baja, así por si ocurre un error en el eliminado del detalle de la factura, no borramos la cabecera, o si ocurre el error al eliminar la cabecera, deshacemos el eliminado previo del detalle para que todo quede como estaba anteriormente. Hasta este punto todo es muy bonito, si en el procedimiento declaramos la transacción controlada por un bloque try y dentro del catch hacemos sólo el rollback, la aplicación nunca se dará por enterada que en la base de datos hubo algún problema, y si éste emite un mensaje de proceso satisfactorio, lo hará incluso cuando tengamos errores. ¿Por qué esto? Simple, la excepción no se expandió desde la base de datos y no pudo ser capturada Continúa Leyendo Capturar error en SQL Server y volver a Lanzarlo

  50. Crear Bases de Datos Replicadas Maestro-Esclavo con MySQL

    Enero 13, 2010. Un Comentario.

    Replicar nuestras bases de datos muchas veces puede ser la solución para nuestros problemas empresariales, desde crear una carga de trabajo equitativa hasta centralizar datos desde lugares remotos en donde no existe una conexión de red constante ni estable o aumentar la velocidad de las aplicaciones cuando la velocidad es muy lenta. Obviamente ganar éstas características tiene su precio a parte del metálico, donde perdemos la capacidad de tener datos actualizados todo el tiempo, o la posibilidad de encontrarnos con conflictos al momento de hacer el “merge“.

    Para hacer esto mínimamente necesitaremos 2 Continúa Leyendo Crear Bases de Datos Replicadas Maestro-Esclavo con MySQL

  51. Plantillas de SQL Server Customizadas

    Enero 6, 2010. Dejanos el Primer Comentario..

    Uno de los tantos problemas de desarrollar en Grupos de Trabajo grandes, es la manera en la cual codifican los demás Compañeros de Trabajo, o que no se respeten al 100% las Políticas de Desarrollo y Codificación de la Empresa / Grupo de Trabajo, para los Scripts y Procedimientos Almacenados o Triggers de nuestras Bases de Datos en SQL Server.

    Para facilitar las cosas, muchas veces las herramientas como el SQL Query Analyzer y SQL Server Management Studio del SQL Server 2005 / 2008, nos presentan las “Plantillas de Código” (pequeños pre-armados de código Transact-SQL listo para modificarse y ser usado para nuestros fines).

    Pero a veces nuevamente esas plantillas no tienen el formato que deseamos, y necesitamos adecuarlas a ellos.

    Una manera de estandarizar esos formatos, es ubicando las plantillas y modificarlas, Continúa Leyendo Plantillas de SQL Server Customizadas

  52. Pérdida de Datos en Firebird (Experiencias…)

    Enero 6, 2010. 2 Comentarios.

    El texto es largo, pero es una experiencia que podría ayudar a evitar que se repitan situaciones similares nuevamente.

    Como todos conocen, Firebird, uno de los motores de Base de Datos Libres de auge en los últimos años, es un motor de Base de Datos de amplia aceptación entre los desarrolladores de Delphi, y ciertas aplicaciones en Java u otros lenguajes de programación.

    También es conocido que las facilidades de uso y administración que provee el Firebird a los DBA’s y usuarios, muchas veces nos lleva a situaciones donde hay corrupción de información, y pérdida de datos (estos podrían ser registros sencillos, estructuras, y tablas con datos completas). Algunas de las formas más comunes por las cuales uno podría perder datos, se encuentran en la Documentación del Firebird mismo, cuya versión Web es accesible desde este link (Inglés requerido).

    Lo que hoy les comentaré, no es una  de las situaciones “normales” donde la información se Continúa Leyendo Pérdida de Datos en Firebird (Experiencias…)

  53. Configurar varias instancias de MySQL en un mismo equipo

    Enero 6, 2010. Dejanos el Primer Comentario..

    Para tener varias instancias independientes del motor de base de datos MySQL debemos hacer un par de configuraciones manuales, ¿Qué significa este concepto? Que podemos tener en la misma instalación, o mismo terminal, más de un motor, escuchando en distintos puertos (uno por cada instancia), teniendo la posibilidad de configurar de manera totalmente independiente y distinta cada una.

    No debemos abusar del uso de las instancias, porque por cada una se corre un proceso que consume recursos y no se comparten entre ellos, sólo es recomendable si es estrictamente necesario, o si queremos ahorrar costos para no Continúa Leyendo Configurar varias instancias de MySQL en un mismo equipo

  54. Cadena de Conexión para Oracle

    Diciembre 13, 2009. Un Comentario.

    Lo siguiente no es un tema complejo ni dificil de encontrar información en la red, el objetivo más bien es juntar todas la cadenas de conexión (conection Strings) que se pueda en un solo lugar, en este caso para el motor de base de datos Oracle. Estarán listado por tipo de driver a utilizarse.

    ODP.Net (Oracle Data Provider .Net)

    1
    
    Espacio de Nombre: Oracle.DataAccess.Client.OracleConnection

    Usando TNS

    1
    
    Data Source=TORCL;User Id=myUsername;Password=myPassword;

    Usando Seguridad Integrada (Integrated Security)

    1
    
    Data Source=TORCL;Integrated Security=SSPI; <a href="http://www.devtroce.com/2009/12/13/cadena-de-conexion-para-oracle/#more-124" class="more-link">Continúa Leyendo Cadena de Conexión para Oracle</a>
  55. Configurar Linked Server con SQL Server y Firebird

    Diciembre 12, 2009. Un Comentario.

    Un Servidor Vinculado sirve para que el motor de base de datos (en este caso SQL Server) pueda tener acceso a otra BD para hacer consultas distribuidas, ejecutar Stored Prochttp://www.devtroce.com/wp-admin/edit.phpedures, entre otros, digamos de un modo “transaparente” ya sea del mismo proveedor o no.

    Para lograr esto necesitamos un proveedor de datos OLEDB y definir su cadena de conexión, a la par de asignarle un nombre lógico, el cual será usado para su invocación directa. Una vez definido esto podemos utilizarlo de manera abstracta para conectarnos a otras fuentes sin necesidad de volver a escribir toda la cadena de conexión. Crear esto con otro motor o instancia de SQL Server es relativamente sencillo, por lo tanto me centraré más bien en hacerlo con el motor de otro fabricante, en este caso Firebird, el cual fue el que más problemas me dió, con MySQL y PostgreSQL incluso fue más sencillo.

    Oficialmente Microsoft da soporte para crear Linked Servers contra SQL Server y Oracle, Continúa Leyendo Configurar Linked Server con SQL Server y Firebird

  56. Diagrama de Venn implementado en SQL

    Diciembre 6, 2009. 2 Comentarios.

    Si queremos aplicar operaciones de conjuntos en el lenguaje SQL tenemos un par de formas de hacerlo, el modo más elegante de hacerlo es utilizar las sentencias diseñadas para este efecto. Los ejemplos que pondre se aplican a SQL Server y Firebird, esto también se puede hacer en Oracle, pero de un modo un tanto distinto, que lo veremos más adelante.

    • UNION Soportados por todas las versiones de SQL Server, y Firebird
    • EXCEPT Soportado por SQL Server 2005 en adelante, no soportado por Firebird 1.5 ni 2
    • INTERSECT Soportado por SQL Server 2005 en adelante, no soportado por Firebird 1.5 ni 2

    Para poder utilizar estas sentencias solo debemos cumplir con dos condiciones:

    1. Todos los conjuntos de datos deben tener la misma cantidad de columnas, del mismo tipo de datos.
    2. Sólo se puede aplicar una sentencia ORDER BY, en el ultimo SELECT.

    Los siguientes ejemplos trabajaremos con las entidades PROFESORES y ALUMNOS. Continúa Leyendo Diagrama de Venn implementado en SQL