Colaboraciones en el Guille

Uso de las vistas de esquema de información de SQL SERVER

[estudio de su funcionalidad y utilidad]

Fecha: 18/Oct/2005 (16/Oct/05)
Autor: Percy Reyes Paredes

         percy's blog               accede a toda a lista de mis artículos


En estos tiempos, ¿ quién puede negarse a conocer la información interna de un servidor de base de datos y sus objetos ? otra pregunta que se me viene a la cabeza es, ¿y para qué conocerla...?. Pues bien, siempre es muy útil y necesario generar diversos informes sobre el contenido de los metadatos de un servidor de base de datos y sus objetos. Algunos dirán... Percy, a que te refieres con metadatos ?, pues es esto, los metadatos representan información interna e independiente sobre el contenido del servidor de base de datos, de las tablas de una base de datos y sus claves... y así un conjunto de datos que nos servirán para informarmos acerca de la estructura interna de nuestros objetos de la base de datos.

¿y cómo hago esto? Pues bien, existen dos métodos para obtener metadatos, uno de ellos son los procedimientos almacenados del sistema, y el otro método son las vistas de esquema de información. En este artículo explicaremos el uso de las vista de esquema de información.

VISTAS DE INFORMACIÓN DE ESQUEMA

Para entender mejor esto, usted debe conocimientos básicos acerca del manejo de vistas para SQL Server. Dada las condiciones, empecemos así... estos proporcionan una vista interna de las tablas del sistema de los metadatos de SQL Server. Para esto usaremos las vistas "encapsuladas" en este esquema llamado INFORMATION_SCHEMA, las cuales nos devolverán un alto nivel de este tipo de información . INFORMATION_SCHEMA ofrece muchas vistas. Cada vista de INFORMATION_SCHEMA contiene metadatos para todos los objetos de datos almacenados en esa base de datos. Pues estas son las vistas disponibles:

CONSTRAINT_COLUMN_USAGE, COLUMN_DOMAIN_USAGE, DOMAIN_CONSTRAINTS, COLUMN_PRIVILEGES, CHECK_CONSTRAINTS, COLUMNS, CONSTRAINT_TABLE_USAGE, VIEW_TABLE_USAGE, DOMAINS KEY_COLUMN_USAGE, SCHEMATA, VIEWS, PARAMETERS, TABLES, REFERENTIAL_CONSTRAINTS, ROUTINES, ROUTINE_COLUMNS, TABLE_CONSTRAINTS, TABLE_PRIVILEGES, VIEW_COLUMN_USAGE.

Por ejemplo, la vista COLUMNS de INFORMATION_SCHEMA devuelve información de las columnas de una determinada tabla, en contraste, la vista TABLES con previa definición para columna TABLE_TYPE a un valor VIEW en la cláusula WHERE devolverá información acerca de las vistas. Más adelante se verán ejemplos para aclarar todo estos puntos...


NOMENCLATURA DE TRES PARTES

Pues es así como se pronuncia: "Nomenclatura de tres partes", es decir, para usas estas vistas se necesita espesificar el nombre de la base de datos, el nombre de la vista propiamente dicha, y el nombre del proceso por lotes que se usará. La nomenclatura que admite SQL Server para usar estas vistas es la siguiente:

Nomenclatura de tres partes para INFORMATION_SCHEMA

CHECK_CONSTRAINTS

Devuelve un listado de restricciones establecidas para la base de datos actual, en este caso hemos tomado como ejemplo la base de datos Northwind. Ejemplo:

SELECT * FROM NORTHWIND.INFORMATION_SCHEMA.CHECK_CONSTRAINTS

Podemos observar los campos: CONSTRAINT_CATALOG que no viene a ser más que el nombre de la base de datos, el campo CONSTRAINT_SCHEMA especifica el  propietario de la restricción, CONSTRAINT_NAME devuelve el nombre de la restricción, y finalmente,  CHECK_CLAUSE nos devuelve el texto de la instrucción Transact-SQL que define la restricción. Aprecie la imagen.

SELECT * FROM NORTHWIND.INFORMATION_SCHEMA.CHECK_CONSTRAINTS

COLUMM_DOMAIN_USAGE

pues precisamente esto, es decir, devuelve una fila por cada columna que tiene un tipo de datos definido por el usuario para dicha de base datos. Ejemplo:

SELECT * FROM PUBS.INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE

Los campos especifican lo siguiente:

DOMAIN_CATALOG la base de datos donde existe el tipo de datos definido por el usuario.

DOMAIN_SCHEMA el nombre del usuario que creó el tipo de datos definido por el usuario.

DOMAIN_NAME el tipo de datos definido por el usuario

TABLE_CATALOG Calificador de la tabla o simplemente el nombre de la base de datos en la que se encuentra la tabla que contiene un columna, la cual a su vez, hace uso de este tipo de datos definido por el usuario.

TABLE_SCHEMA Propietario de la tabla.

TABLE_NAME Tabla en la que se utiliza el tipo de datos definido por el usuario o simplemente el nombre de la tabla que contiene un columna, la cual a su vez, hace uso de este tipo de datos definido por el usuario.o simplemente.

COLUMN_NAME Columna que utiliza el tipo de datos definido por el usuario.


VIEWS

Lista todas la vistas que se encuentran en la base de datos a donde puede el usuario accesar. Por ejemplo con la siguiente sentencia, usted puede listar toda las vistas que se encuentran en la base de datos Northwind.

SELECT * FROM NORTHWIND.INFORMATION_SCHEMA.VIEWS
				

La imagen muestra tan sólo las 10 primeras vistas del total de 23 vistas. Para esta ocasión no tiene mucho sentido describir cada uno de los campos del resultado, ya que estas son autodescriptivas...

SELECT * FROM NORTHWIND.INFORMATION_SCHEMA.VIEWS

TABLES

pues nos permite listar el conjunto de tablas para la base de datos actual. Esto es muy sencillo de hacer y entender. Ejemplo:

SELECT * FROM PUBS.INFORMATION_SCHEMA.TABLES

...esto es lo que arroja esta simple consulta...

SELECT * FROM PUBS.INFORMATION_SCHEMA.TABLES

SCHEMATA

devuelve una lista con las base de datos a la que el usuario tiene acceso. Ejemplo:

SELECT * FROM PUBS.INFORMATION_SCHEMA.SCHEMATA

VIEW_COLUMN_USAGE

Lista un fila por cada columna que ha sido usada para definir una vista, es decir, despliega los atributos para cada columna que ha sido establecida dentro de la vista. Por ejemplo: para crear la siguiente vista se usó los campos CustomerID, CompanyName, ContactName, Country,city de la tabla Customers.

				
					

--creamos una nueva versión de la vista
create view  viewCustomers
as
select top 5 CustomerID, CompanyName, ContactName, Country,city
from customers
where city like 'M%'
order by companyname

pues usaremo esta sentencia para visualizar los atributos de estas columnas....

SELECT * FROM Northwind.INFORMATION_SCHEMA.VIEW_COLUMN_USAGE WHEREVIEW_NAME='viewCustomers'

Dada la idea e introducción acerca de esta funcionalidad usando la información del esquema, usted está listo para hacer pruebas y verificar los resultados de las siguientes vistas disponibles. Como se habrá dado cuenta, tener conocimiento acerca de los metadatos de una base de datos y sus objetos es muy útil, necesario e interesante, ya sea para simplemente informarse o como tambien para tomar decisiones en el momento de realizar operaciónes contra cualquier base de datos.

Espero les haya sido útil este pequeño aporte... nos vemos...

Percy Reyes
Microsoft Certified Professional

Saludos desde Trujillo - Perú

Por favor, califica este artículo en PanoramaBox, así me animarás a continuar colaborando contigo.


ir al índice principal del Guille