jueves, 10 de julio de 2008

SCHEMA en Microsoft SQL Server

Muchas veces trabajando con bases de datos nos encontramos que al ver el listado de las tablas nos aparece el nombre de usuario al lado izquierdo del nombre de la tabla separandola de este con un punto.

Esto se denomina SCHEMA y es por decirlo de algun modo la identificacion del propietario de la tabla.

Pero podemos indicarle que utilice el de la propia base de dator para que asi no haya ninguna complicacion a la hora de programar, que suele haberlas, al importar las tablas a otra base distinta.

Para este echo cambiaremos en las seccion de Seguridad, Usuarios, hay una opcion para indicar cual sera el SCHEMA por defecto. Aqui le indicaremos que use por defecto el propio de la base de datos, suele ser "dbo".

Si ya tenemos muchas tablas creadas y sus respectivos procedimientos almacenados podemos realizar una consulta para cambiar todos los SCHEMA de un solo golpe.

Para las tablas es bien sencillo, solo tenemos que ejecutar esta simple consulta:


exec sp_MSforeachtable "ALTER SCHEMA dbo TRANSFER ? PRINT '? modified' "


Para los procedimientos almacenador utilizaremos una consulta:


SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name
FROM sys.Procedures p INNER JOIN
sys.Schemas s on p.schema_id = s.schema_id
WHERE s.Name = 'schema'


Esta consulta nos devuelve una lista con los comandos para cambiar todos los procedimientos almacenados de schema a dbo.

Solo tenemos que copiar el resultado y pegarlo en una nueva consulta.


Espero que esto sea de ayuda y si teneis alguna pregunta o quereis añadir algua correccion no lo dudeis, estamos aqui para eso.

No hay comentarios: