Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Unabase de datos independiente es una base de datos aislada de otras bases de datos y de la instancia de SQL Server que hospeda la base de datos. SQL Server 2014 ayuda al usuario a aislar su base de datos de la instancia de 4 maneras.
Gran parte de los metadatos que describen una base de datos se mantiene en la base de datos. (Además de, o en lugar de, mantener los metadatos en la base de datos maestra).
Todos los metadatos se definen mediante la misma ordenación.
La base de datos puede realizar la autenticación de usuario, lo que reduce la dependencia de las bases de datos en los inicios de sesión de la instancia de SQL Server.
El entorno de SQL Server (DMVs, XEvents, etc.) informa y puede actuar sobre la información de contención.
Algunas características de bases de datos parcialmente independientes, como almacenar metadatos en la base de datos, se aplican a todas las bases de datos de SQL Server 2014. Algunas ventajas de las bases de datos parcialmente independientes, como la autenticación de nivel de base de datos y la intercalación de catálogo, deben habilitarse antes de que estén disponibles. La contención parcial se habilita mediante las CREATE DATABASE
instrucciones y ALTER DATABASE
o mediante SQL Server Management Studio. Para obtener más información sobre cómo habilitar la contención parcial de la base de datos, consulte Migración a una base de datos parcialmente independiente.
En este tema se incluyen las siguientes secciones.
Conceptos de bases de datos parcialmente contenidos
Una base de datos totalmente independiente incluye todos los valores y metadatos necesarios para definir la base de datos y no tiene dependencias de configuración en la instancia del motor de base de datos de SQL Server donde está instalada la base de datos. En versiones anteriores de SQL Server, separar una base de datos de la instancia de SQL Server podría llevar mucho tiempo y requerir conocimientos detallados de la relación entre la base de datos y la instancia de SQL Server. Las bases de datos parcialmente independientes facilitan la separación de una base de datos de la instancia de SQL Server y otras bases de datos.
La base de datos contenida tiene en cuenta las características con respecto a la contención. Cualquier entidad definida por el usuario que solo se base en funciones que residen en la base de datos se considera totalmente independiente. Cualquier entidad definida por el usuario que se base en funciones que residen fuera de la base de datos se considera no contenida. (Para obtener más información, consulte la sección Contención más adelante en este tema).
Los siguientes términos se aplican al modelo de base de datos independiente.
Límite de la base de datos
Límite entre una base de datos y la instancia de SQL Server. Límite entre una base de datos y otras bases de datos.
Contenido
Elemento que existe completamente en el límite de la base de datos.
Sin contener
Elemento que cruza el límite de la base de datos.
Base de datos no contenida
Base de datos que tiene la contención establecida en NONE. Todas las bases de datos de versiones anteriores a SQL Server 2012 son no autónomas. De forma predeterminada, todas las bases de datos de SQL Server 2012 y posteriores tienen una contención establecida en NONE.
Base de datos parcialmente contenida
Una base de datos parcialmente independiente es una base de datos independiente que puede permitir algunas características que cruzan el límite de la base de datos. SQL Server incluye la capacidad de determinar cuándo se cruza el límite de contención.
Usuario contenido
Hay dos tipos de usuarios para bases de datos independientes.
Usuario de base de datos independiente con contraseña
La base de datos autentica a los usuarios de base de datos contenida con contraseñas.
Principales de Windows
Los usuarios autorizados de Windows y los miembros de grupos autorizados de Windows pueden conectarse directamente a la base de datos y no necesitan inicios de sesión en la base de datos maestra. La base de datos confía en la autenticación por Windows.
A los usuarios basados en las inicios de sesión de la base de datos maestra se les puede conceder acceso a una base de datos independiente, pero eso crearía una dependencia de la instancia de SQL Server. Por lo tanto, para crear usuarios en función de los inicios de sesión, consulte el comentario sobre las bases de datos parcialmente contenidas.
Importante
Habilitar bases de datos parcialmente independientes delega el control sobre el acceso a la instancia de SQL Server a los propietarios de la base de datos. Para más información, vea Security Best Practices with Contained Databases.
Límite de la base de datos
Dado que las bases de datos parcialmente independientes separan la funcionalidad de la base de datos de las de la instancia, hay una línea claramente definida entre estos dos elementos denominado límite de la base de datos.
Dentro del límite de la base de datos es el modelo de base de datos, donde se desarrollan y administran las bases de datos. Algunos ejemplos de entidades ubicadas dentro de la base de datos incluyen tablas del sistema como sys.tables, usuarios de base de datos independientes con contraseñas y tablas de usuario en la base de datos actual a la que hace referencia un nombre de dos partes.
Fuera del límite de la base de datos es el modelo de administración, que pertenece a funciones y administración de nivel de instancia. Entre los ejemplos de entidades ubicadas fuera del límite de la base de datos se incluyen tablas del sistema como sys.endpoints, usuarios asignados a inicios de sesión y tablas de usuario en otra base de datos a la que hace referencia un nombre de tres partes.
Contención
Las entidades de usuario que residen completamente dentro de la base de datos se consideran contenidas. Las entidades que residen fuera de la base de datos, o que dependen de la interacción con funciones fuera de la base de datos, se consideran no detenidas.
En general, las entidades de usuario se dividen en las siguientes categorías de contención:
Entidades de usuario totalmente independientes (aquellas que nunca cruzan el límite de la base de datos), por ejemplo sys.indexes. Cualquier código que use estas características o cualquier objeto que haga referencia solo a estas entidades también está totalmente contenido.
Entidades de usuario no contenidas (aquellas que cruzan el límite de la base de datos), por ejemplo, sys.server_principals o una entidad de seguridad de servidor. Cualquier código que use estas entidades o cualquier función que haga referencia a estas entidades no está contenida.
Base de datos parcialmente contenida
La característica de base de datos independiente solo está disponible actualmente en un estado parcialmente contenido. Una base de datos parcialmente contenida es una base de datos contenida que permite el uso de características no contenidas.
Utiliza las vistas sys.dm_db_uncontained_entities y sys.sql_modules (Transact-SQL) para devolver información sobre los objetos o las características no contenidas. Al determinar el estado de contención de los elementos de la base de datos, puede detectar qué objetos o características deben reemplazarse o modificarse para promover la contención.
Importante
Dado que determinados objetos tienen una configuración de contención predeterminada de NONE, esta vista puede devolver falsos positivos.
El comportamiento de las bases de datos parcialmente independientes difiere de la de las bases de datos no contenidas con respecto a la intercalación. Para obtener más información sobre los problemas de intercalación, consulte Intercalaciones de bases de datos contenidas.
Ventajas del uso de bases de datos parcialmente independientes
Hay problemas y complicaciones asociados a las bases de datos no independientes que se pueden resolver mediante una base de datos parcialmente independiente.
Movimiento de base de datos
Uno de los problemas que se producen al mover bases de datos es que alguna 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 dentro de la instancia en lugar de en la base de datos. Al mover una base de datos dependiente de una instancia a otra de SQL Server, esta información se queda atrás. Debe 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 lento.
La base de datos parcialmente contenida puede almacenar información importante, de manera que todavía disponga de ella después de ser trasladada.
Nota:
Una base de datos parcialmente contenida puede proporcionar documentación que describa las características utilizadas por una base de datos que no se pueden separar de la instancia. Esto incluye una lista de otras bases de datos relacionadas, la configuración del sistema que requiere la base de datos, pero no se puede incluir, etc.
Ventaja de los usuarios de bases de datos independientes con AlwaysOn
Al reducir los vínculos a la instancia de SQL Server, las bases de datos parcialmente independientes pueden ser útiles durante la conmutación por error cuando se usan grupos de disponibilidad AlwaysOn.
La creación de usuarios contenidos permite al usuario conectarse directamente a la base de datos independiente. Se trata de una característica muy importante en escenarios de alta disponibilidad y recuperación ante desastres, como en una solución AlwaysOn. Si los usuarios son usuarios contenidos, en caso de conmutación por error, las personas podrían conectarse a la base de datos secundaria sin crear inicios de sesión en la instancia que hospeda la base de datos secundaria. Esto proporciona una ventaja inmediata. Para obtener más información, vea Información general de los grupos de disponibilidad AlwaysOn (SQL Server) y requisitos previos, restricciones y recomendaciones para grupos de disponibilidad AlwaysOn (SQL Server).
Desarrollo inicial de bases de datos
Dado que es posible que un desarrollador no sepa dónde se implementará una nueva base de datos, limitar los impactos ambientales implementados en la base de datos reduce el trabajo y la preocupación para el desarrollador. En el modelo no contenido, el desarrollador debe considerar posibles impactos ambientales en la nueva base de datos y programa en consecuencia. Sin embargo, mediante el uso de bases de datos contenidas parcialmente, los desarrolladores pueden detectar impactos a nivel de instancia en la base de datos y preocupaciones relacionadas con el nivel de instancia que afectan al desarrollador.
Administración de bases de datos
Mantener la configuración de la base de datos en la base de datos, en lugar de en la base de datos maestra, permite que cada propietario de la base de datos tenga más control sobre su base de datos, sin conceder permiso sysadmin al propietario de la base de datos.
Limitaciones
Las bases de datos parcialmente contenidas no permiten las siguientes características.
Las bases de datos parcialmente independientes no pueden usar la replicación, la captura de datos modificados ni el seguimiento de cambios.
Procedimientos numerados
Objetos enlazados a esquema que dependen de funciones integradas con cambios de intercalación
Cambio en la vinculación resultante de los cambios de intercalación, incluidas las referencias a objetos, columnas, símbolos o tipos.
Replicación, captura de datos modificados y seguimiento de cambios.
Advertencia
Actualmente, se permiten los procedimientos temporales almacenados. Dado que los procedimientos almacenados temporales contienen la contención de infracciones, no se espera que se admitan en versiones futuras de la base de datos independiente.
Identificación de la limitación de la base de datos
Hay dos herramientas para ayudar a identificar el estado de contención de la base de datos. El sys.dm_db_uncontained_entities (Transact-SQL) es una vista que muestra todas las entidades potencialmente no contenidas de la base de datos. El evento database_uncontained_usage se produce cuando se identifica cualquier entidad no detenida real en tiempo de ejecución.
sys.dm_db_uncontained_entities
En esta vista se muestran las entidades de la base de datos que tienen la posibilidad de no estar detenidas, como las que cruzan el límite de la base de datos. Esto incluye las entidades de usuario que pueden usar objetos fuera del modelo de base de datos. Sin embargo, dado que la contención de algunas entidades (por ejemplo, las que usan SQL dinámico) no se puede determinar hasta el tiempo de ejecución, la vista puede mostrar algunas entidades que realmente no están detenidas. Para obtener más información, vea sys.dm_db_uncontained_entities (Transact-SQL).
evento de uso no contenido de base de datos
Este XEvent se produce cada vez que se identifica una entidad no contenida en tiempo de ejecución. Esto incluye las entidades originadas en el código de cliente. Este XEvent solo se producirá para entidades no contenidas reales. Sin embargo, el evento solo se produce en tiempo de ejecución. Por lo tanto, este XEvent no identificará las entidades de usuario no contenidas que usted no haya ejecutado.
Contenido relacionado
Características modificadas (base de datos contenida)
Intercalaciones de base de datos contenidas
Prácticas recomendadas de seguridad con bases de datos independientes