Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img
19 de Octubre, 2012 · Contained-database

Contained database. Base de datos autocontenidas. SQL Server 2012. DENALI.

Un equipo puede tener una o varias instancias de SQL Server instaladas. Y hasta ahora cada instancia de SQL Server contenia las bases de datos del sistema (master, msdb, tempdb) y una o varias bases de datos de usuaro. Con la nueva versión Denali (SQL Server 2012) se incorporan un nuevo tipo de base de datos, estas se denominan: bases de datos autocontenidas, las cuales lo que pretenden es eliminar las dependencias entre la base de datos y la instancia.

Una base de datos autocontenida, contiene todo lo que necesita (su metadatos) en si misma. No depende de ninguna base de datos del sistema, ni siquiera de alguna configuración de la instancia.

Cuando los usuarios obtienen acceso a una instancia de SQL Server, se identifican con un inicio de sesión, sesión cuyas credenciales de usuario y contraseña son a nivel de instancia, se guardan en la base de datos master. Cuando los usuarios obtienen acceso a una base de datos, se identifican en ella con un usuario de base de datos. Hasta ahora, y en versiones anterionres y por defecto tambien en Denail (SQL 2012) un usuario de base de datos esta enlazado o mapeado con un inicio de sesión de SQL, y se usa este inicio de sesión para dar acceso a la instancia y a las bases de datos, accediento a las bases de datos con los permisos que se le han dado al usuario de base de datos. Ahora bien, si habilitamos las bases de datos autocontenidas, se pueden crear usuarios, en estas bases de datos, que no necesiten un inicio de sesión (a nivel de instancia) para acceder a ellas. Es la propia base de datos autocontenida quien almacena las credenciales de usuario y contraseña para dar acceso a los usuarios.

Otro punto favorable, que traen las bases de datos autocontenidas o parcialmente autocontenidas, es el modo en que trabajan con la intercalacion (collation). Minimizan los confictos de intercalacion que suceden cuando queremos cruzar en una consulta dos campos de tipo cadena, que tengan tipos diferentes de intercalación. Por ejemplo, recordar que las bases de datos no-autocontenidas usan la base de datos TEMPDB con tablas temporales, y si la tempdb tiene diferente intercalacion que nuestras bases de datos de usuarios, tendremos que definir la intercalacion en todas las columnas que usen nuestras tablas temporales (cosa que nunca se suele hacer) para no tener errores... Pues en las bases de datos autocontenidas o parcialmente autocontenidas utilizan para las tablas temporales la intercalación de la propia base de datos, (y no la de la base de datos tempdb).

Cuando definimos una base de datos, bien sea con CREATE DATABASE o ALTER DATABASE,  ahora con Denali distinguimos tres tipos:

  • Fully contained database. Bases de datos completamente autocontenida. No tiene dependencias de configuración con la instancia a la que pertenecen.

·         Partially contained database. Bases de datos parcialmente autocontenida: Permite la creación y uso de objetos que trabajen a nivel de instancia.

      Hay muy pocas diferencias entre las bases de datos autocontenidas y las bases de datos parcialmente autocontenidas. Las parcialmente autocontenidas te permiten hacer referencias a algo que este fuera de la propia base de datos.

  • None contained database. Base de datos no autocontenida. Es la opción por defecto que tienen todas las bases de datos. Tambien era como se trabajaba en versiones anteriores.

Para establecer una de estas tres opciones hay que utilizar la opción Containment y establecer los valores NONE o PARTIAL dependiendo del tipo de base de datos que queramos.

A modo de resumen voy a mostraros como crearía una base de datos parcialmente autocontenida:

--Para poder mostrar todas las opciones avanzadas de SP_CONFIGURE

EXEC sp_configure 'show advanced options', 1

GO

RECONFIGURE WITH OVERRIDE

--Para poder crear bases de datos autocontenidas:

GO

EXEC sp_configure 'contained database authentication', 1

GO

RECONFIGURE WITH OVERRIDE

GO

--Creamos al base de datos Parcial autocontenida

CREATE DATABASE [MiBDAutocontenida1]

CONTAINMENT = PARTIAL

GO

 

En caso que queramos modificar una base de datos ya existente :

 

ALTER DATABASE [MiBDAutocontenida1]

CONTAINMENT = PARTIAL

GO

 

En SQL Server 2012, la característica de base de datos autocontenidas solo está disponible actualmente en un estado de independencia parcial. Una base de datos parcialmente autocontenida es una base de datos autocontenida que permite el uso de características que esten fuera de la propia base de datos.

Si necesitamos una aplicación portable que sabemos a priori que vamos a tener que cambiar de servidor es interesante utilizar las bases de datos parcialmente autocontenidas. Facilitan la migración de las bases de datos hacia otra instancia. Uno de los problemas que se produce al mover bases de datos, es que determinada información importante puede no estar disponible cuando una base de datos se mueve de una instancia a otra. Por ejemplo, la información de inicio de sesión se almacena en la instancia en lugar de en la base de datos, por lo que al mover una base de datos de una instancia a otra (con objetos dependientes de la instancia), esta información se queda atrás. Tendremos que identificar la información que falta y moverla con la base de datos a la nueva instancia de SQL Server. Este proceso puede ser difícil y nos puede llevar mucho tiempo. Por el contrario, la base de datos autocontenida o parcialmente autocontenida puede almacenar toda la información que necesita en la propoia base de datos, de modo que permanezca toda la información, en la propia base de datos, después de movela a una nueva instancia.

Usuario:

Hay dos tipos de usuarios para las bases de datos autocontenidas.

·         Usuario de la base de datos autocontenidas: "con contraseña"

La base de datos es la que autentica a los usuarios y no requieren inicios de sesión a nivel de instancia.

·         Entidades de seguridad de Windows

Los usuarios de Windows autorizados y los miembros de grupos de Windows autorizados pueden conectarse directamente a la base de datos y no requieren inicios de sesión a nivel de instancia. La base de datos confía en la autenticación de Windows.

En las bases de datos parcialmente autocontenidas, se puede conceder el acceso a los loguines de la instancia, igual que las bases de datos no-autocontenidas. Aunque no tiene mucho sentido usarlos, ya que estariamos apuntando a objetos que estan fuera de la base de datos autocontenidas (estos loguines se almacenan en la master) y ese no es el concepto, no es el fin de estas bases de datos.

La habilitación de bases de datos parcialmente autocontenidas delega el control sobre el acceso a la instancia de SQL Server en los propietarios de la base de datos. Para obtener más información, vea Prácticas recomendadas de seguridad con bases de datos independientes. http://msdn.microsoft.com/es-es/library/ff929055.aspx

Voy a mostar como crear un usuario en la base de datos sin inicio de sesión asociado:

--Nos conectamos a la base de datos

use MiBDAutocontenida1

go

--creo usuario con password en la base de datos

create user usuario01 with password='aqwsZX12'

go

Para conectar sobre la base de datos autocontenida no podremos usar la conexión por defecto. Ya que por defecto la conexión se realiza sobre la instancia usando la base de datos master. Para cambiar el tipo de conxion nos vamos a Options Connection Properties en el formulario de conexión y especificamos la Base de datos:


Fuentes:

Microsoft, msdn.

Apunte y recopilación por Norman M. Pardell

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

publicado por normanmpardell a las 20:10 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad