JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Consulta para sacar información de campos en SQL Server

Hoy un truco rápido.

Imagínate que tienes dos bases de datos aparentemente idénticas en dos servidores SQL Server. Quizá una es la de producción y la otra es de desarrollo. Las BBDD deberían ser iguales pero no te fías de que sea así por el motivo que sea, y necesitas comprobar de manera rápida si, al menos, tienen las mismas tablas y número de campos.

Si no tienes una herramienta mejor a mano con el propio SQL Server puedes conseguirlo fácilmente usando la información contenida en la tabla de sistema Information_Schema que, como su propio nombre indica, contiene información sobre el esquema de la base de datos, y por lo tanto nos permite consultar cualquier dato sobre la estructura y definición de los datos.

En el enlace anterior está toda la información, pero vamos a ver un par de consultas sencillas pero útiles, por ejemplo para el caso planteado antes.

Información sobre las tablas de la BD

SELECT * FROM Information_Schema.Tables

Número de campos por tabla

Esta consulta es útil para averiguar cuántos campos tiene cada tabla de la base de datos, de forma que podamos ver de un vistazo rápido si este dato coincide entre dos bases de datos diferentes.

SELECT Table_Name, COUNT(*) As NumCampos
FROM Information_Schema.Columns
GROUP BY Table_Name
ORDER BY Table_Name

Si ambas están BBDD en el mismo servidor se puede hacer una consulta cruzada para que ya nos de directamente las que sean diferentes.

No te servirá si lo que difiere es el tipo de un campo, pero es muy útil para ver si al emnos hay diferencias estructurales y detectar fallos gordos de actualización. Sería fácil hacer una consulta ampliada que comparara los tipos de cada campo para encontrar diferencias también en esto. La siguiente consulta sencilla puede servir de base para investigar más.

Información sobre campos de una tabla concreta

SELECT *
FROM Information_Schema.Columns
WHERE TABLE_NAME = 'NombreTabla'
ORDER BY COLUMN_NAME

¡Espero que te sea útil!

Aprende .NET, Cursos on-line tutelados:
   ·
Desarrollo Web con ASP.NET 4.0 Web Forms (Tutelado por mi)
   · ASP.NET 4.0 Web Forms desde cero (Tutelado por mi)
   · Desarrollo Web con ASP.NET MVC 2
   · Silverlight 4.0 - Aplicaciones Ricas para Internet (RIA)
   · jQuery paso a paso para programadores ASP.NET
   · Visual Studio 2010 desde cero

¿Este post te ha ayudado?, ¿has aprendido algo nuevo? Pues ¡ayúdame a ayudar a otros! No te costará nada y puedes conseguir premio. Es muy importante. Pulsa para saber más...
José Manuel Alarcón
Banner

Comentarios (3) -

Hola muy buenas y útiles las consultas, te quería preguntar si sabrías como saber por medio de una consulta en sql server en que tabla se encuentra un determinado campo?

Muchas gracias

Responder

Spain Jose Padilla

Felicitaciones
En un par de lineas se consigue informacion concreta. me fue muy util.
Gracias

Responder

Me encantó su articlulo, like!!!!

Responder

Agregar comentario