1 0 Tag Archives: Bases de Datos
post icon

Listar las columnas y sus características de una tabla en SQL Server

Leer la metadata de SQL Server no es para nada complejo, y tiene una buena documentación. Una tarea útil y que es bastante buscada en los foros es listar las columnas de las tablas, con sus tipos de datos, Foreing Keys, Primary Keys, etc.

No es muy común hacer estas lecturas, pero si sirve para un DBA, o un desarrollador que quiere automatizar procesos o incluso crearse alguna especie de IDE personalizado.

En el siguiente query verán listados los nombres, el id, tipo de dato, precision, si soporta nulo, si es identity, sus FK entre otros. (Continuar Leyendo sobre Listar las columnas y sus características de una tabla en SQL Server)

post icon

Como utilizar los SavePoints en las transacciones de SQL Server

Las transacciones son un conjunto de operaciones que se deben completar el conjunto completo de instrucciones o ninguna normalmente. Pero existen los casos en donde tenemos varios pasos y si se ejecuta hasta cierto punto queremos hacer COMMIT de las operaciones, y simplemente deshacer el resto que arroja error.

Las circunstancias de uso no son muy comunes pero tampoco demasiado escasas. Para lograr esto podemos crear savepoints en nuestra transacción, es cuestión de agregar un poco más de control y líneas de código a lo que estamos acostumbrados.

En el siguiente script SQL verán un ejemplo simple y (Continuar Leyendo sobre Como utilizar los SavePoints en las transacciones de SQL Server)

post icon

Autocompletar el SQL en SQL Server Management Studio

Para los que usamos MS SQL como motor de base de datos y su IDE SQL Server Management Studio, especialmente en versiones 2005 para abajo nos quejamos de la falta de un IntelliSense o Autocompletado de SQL. En la versión 2008 en adelante si bien es cierto que apareció tampoco funciona en la sección triggers y tampoco si nos conectamos a versiones anteriores del motor.

Una de las soluciones que solía utilizar era cambiar de Entorno por EMS o Toad (Continuar Leyendo sobre Autocompletar el SQL en SQL Server Management Studio)

post icon

Eliminar filas duplicadas con SQL de una tabla

Es típico encontrarnos con casos en donde alguien se olvido de colocar una clave única en algún lugar y luego tenemos registros con columnas duplicadas — no me refiero precisamente a claves primarias pero también podría aplicar el caso — y necesitamos eliminarlos pero dejar siempre uno de cada valor único, no es muy compleja la lógica a utilizar pero es una pregunta muy frecuente de como realizar esta tarea.

Para comprender bien la operativa a realizar vamos a hacer un ejemplo muy sencillo, creamos una (Continuar Leyendo sobre Eliminar filas duplicadas con SQL de una tabla)

post icon

SCOPE_IDENTITY vs IDENT_CURRENT vs @@IDENTITY en SQL Server

En SQL Server al crear tablas podemos determinar que una columna que almacene un tipo de dato entero tenga valores autoincrementales, lo que se conoce como valores de identidad o identity. La cantidad de saltos entre estos valores y el valor inicial pueden ser definidos. Esto quiere decir que si en una tabla definimos varias columnas y una representa la Primary Key a la que se le asigne el valor de identidad, éste irá aumentando automáticamente su valor de acuerdo vayamos agregando registros a la tabla.

Es conveniente tener en cuenta que un valor identity nunca se revierte, es decir, si una transacción produce alguna excepción y realiza el rollback de la misma, ésta dejará un hueco entre los valores del identity.

En algún punto de nuestro sistema necesitaremos recuperar los valores (Continuar Leyendo sobre SCOPE_IDENTITY vs IDENT_CURRENT vs @@IDENTITY en SQL Server)

post icon

Particionamiento Horizontal de Tablas en PostgreSQL

Más de uno me mirará con una cara ¿De que hablas, Willis? preguntándose que es un particionamiento horizontal de tablas. Se le llama así cuando tenemos tablas que almacenan un conjunto demasiado grande de registros (en millones) y éste comienza a tener un bajo rendimiento, es entonces cuando se decide partir la tabla en tablas más pequeñas en cuanto a su almacenamiento de datos se refiere.

Para comprender completamente el concepto de Particionamiento Horizontal necesitaremos el conocimiento previo de herencia de tablas en éste motor, lo pueden leer aquí si lo desean.

Hace unos meses hablaba con un amigo y colega sobre sus tareas en una empresa de gran porte en donde tiene millones de filas creadas al día, el rubro es la telefonía celular y almacenan los mensajes de texto para luego trabajar con ellos, me mencionaban que iban partiendo sus tablas de manera manual separado en meses y el DBA (Continuar Leyendo sobre Particionamiento Horizontal de Tablas en PostgreSQL)

post icon

Herencia de Tablas en PostgreSQL

Este es el artículo nº 200 publicado en Devtroce y deseo escribir sobre algún tema de base de datos, y pensé en particionamiento horizontal en Postgre pero el mismo requiere conocimientos sobre herencias de tablas para llevarlo a cabo, entonces decidí escribir sobre ésta característica que ningún otro motor presenta.

Llamativamente la guerra de la orientación a objetos ganó en el campo de los lenguajes de aplicación pero no en las bases de datos, a pesar de ello Postgre implementa varios conceptos del mismo (aunque en un nivel básico) y otros motores no lo hacen, se dedican más bien a desarrollarse como motores relacionales, aunque tampoco ningún motor del mercado cumple con las 12 reglas de Edgar Codd. (Continuar Leyendo sobre Herencia de Tablas en PostgreSQL)

post icon

Cargar un DataGridView a partir de un DataSet/DataTable

El día de ayer veíamos como recorrer un DataReader y rellenar una grilla con sus filas, además de las ventajas y desventajas de cada uno en cada caso, hoy veremos la misma funcionalidad pero a partir de un DataSet que contiene un DataTable.

El código será en su mayor parte el mismo que ayer para comprender con mayor facilidad la diferencia, y sólo variará en la fuente de datos para la grilla.

Recordad que no es necesario en éste caso que generen las columnas en de la grilla, ya que el método DataSource de la grilla se encargará de crear la colección. (Continuar Leyendo sobre Cargar un DataGridView a partir de un DataSet/DataTable)

post icon

Recorrer un DataReader y cargar un DataGridView en C#

Hoy estaba mostrandoles a unos compañeros de trabajo trozos de código básicos para comenzar a programar en C#.Net y lo primero que hicimos fue Conectarnos a un motor de Base de Datos MySQL y cargamos una grilla a partir de un DataReader y noté que resultó más complicado que cargarlo desde un DataTable, entonces decidí escribir el código aquí para otros que lo necesiten en algún momento.

Basicamente, lo que haremos será seleccionar datos de una tabla y lo cargaremos en un DataReader, luego recorreremos secuencialmente la misma e iremos cargando fila por fila la grilla. Deben tener en cuenta que la grilla ya tiene que tener diseñada las columnas o en su defecto ir agregandoles por código las mismas. (Continuar Leyendo sobre Recorrer un DataReader y cargar un DataGridView en C#)

post icon

Como ejecutar SQL dinámico en SQL Server

Recién escribía sobre SQL Dinámico sobre MySQL y aprovecho para escribir también sobre SQL Server. Escencialmente son muy parecidos la manera de trabajar, pero MsSQL nos ofrece un 2 maneras de llevar a cabo este cometido.

  • Con el comando EXECUTE O EXEC
  • Y con el SP sp_executesql

Deben tener en cuenta que usar el segundo método es más eficiente, ya que el motor puede crear planes de ejecución en base a estadísticas de los querys si se ejecutan más de una vez, y ofrece substitución de parámetros. (Continuar Leyendo sobre Como ejecutar SQL dinámico en SQL Server)