viernes, 3 de abril de 2020

Esquemas en el SQL Server


El comportamiento de los esquemas cambió desde SQL Server 2005, anteriormente estaban asociados a los usuarios, es decir cada usuario tenia su propio esquema; lo que ocasionaba objetos huérfanos al momento de eliminar un usuario, cada esquema ahora es un espacio de nombres distinto que existe de forma independientemente del usuario de base de datos que lo creó. Es decir, un esquema simplemente es un contenedor de objetos. Cualquier usuario puede ser propietario de un esquema, y esta propiedad es transferible.

Comportamiento nuevo

La separación de propiedad de los esquemas tiene consecuencias importantes:

  • La propiedad de los esquemas y de los elementos protegibles con ámbito de esquema es transferible. 
  • Es posible mover objetos entre esquemas. 
  • Un mismo esquema puede contener objetos que sean propiedad de varios usuarios de base de datos.
  • Varios usuarios de base de datos pueden compartir un mismo esquema predeterminado.
  • Se pueden administrar los permisos sobre esquemas y sobre elementos protegibles con mayor precisión que en las versiones anteriores. 
  • Cualquier entidad de seguridad de base de datos puede ser propietaria de un esquema. Esto incluye roles y roles de aplicación.
  • Es posible eliminar un usuario de base de datos sin necesidad de eliminar objetos en un esquema correspondiente.
  • El código escrito para las versiones anteriores de SQL Server puede producir resultados incorrectos si el código considera que los esquemas son equivalentes a los usuarios de base de datos.
  • Las visas de catálogo diseñadas para versiones anteriores de SQL Server pueden devolver resultados incorrectos, incluidos sysobjects.
  • Cuando se crea un objeto de base de datos, si especifica una entidad de seguridad de dominio válida (usuario o grupo) como la propietaria del objeto, la entidad de seguridad de dominio se agregará a la base de datos como esquema. Esa entidad de seguridad de dominio será la propietaria del nuevo esquema.

Para crear un esquema mediante SQL Server Management Studio

  1. En SQL Server Management Studio, abra el Explorador de objetos y expanda la carpeta Bases de datos.
  2. Expanda la base de datos en la que se va a crear el esquema de la misma.
  3. Haga clic con el botón secundario en la carpeta Seguridad, seleccione Nuevo y, a continuación, haga clic en Esquema.
  4. En la página General, escriba un nombre para el nuevo esquema en el cuadro Nombre de esquema.
  5. En el cuadro Propietario del esquema, escriba el nombre del usuario o función de base de datos que va a poseer el esquema.
  6. Haga clic en Aceptar.

Para crear un esquema con Transact-SQL

  1. En el Editor de consultas, conéctese a la base de datos en la que se va a crear el esquema de la base de datos; para ello, ejecute el siguiente comando de Transact-SQL:

    USE <database name> GO
  2. Cree el usuario ejecutando el siguiente comando de Transact-SQL:

    CREATE SCHEMA <new schema name> AUTHORIZATION [new schema owner] ;
    GO