Compartir a través de


Migración a una base de datos parcialmente contenida

En este tema se describe cómo preparar el cambio en el modelo de base de datos parcialmente independiente y, a continuación, se proporcionan los pasos de migración.

En este tema:

Preparación para migrar una base de datos

Revise los siguientes elementos al considerar la posibilidad de migrar una base de datos al modelo de base de datos parcialmente independiente.

  • Debe comprender el modelo de base de datos parcialmente contenido. Para más información, consulte Contained Databases.

  • Debe comprender los riesgos que son únicos para las bases de datos parcialmente independientes. Para más información, vea Security Best Practices with Contained Databases.

  • Las bases de datos independientes no admiten la replicación, la captura de datos modificados ni el seguimiento de cambios. Confirme que la base de datos no usa estas características.

  • Revise la lista de características de bases de datos que se modifican para bases de datos parcialmente contenidas. Para obtener más información, vea Características modificadas (base de datos independiente).

  • Consulte sys.dm_db_uncontained_entities (Transact-SQL) para encontrar objetos o características no contenidas en la base de datos. Para obtener más información, consulte.

  • Monitorea el database_uncontained_usage XEvent para ver cuándo se utilizan funciones no contenidas.

Habilitar bases de datos contenidas

Las bases de datos contenidas deben estar habilitadas en la instancia del motor de base de datos de SQL Server antes de poder crear bases de datos contenidas.

Habilitación de bases de datos contenidas mediante Transact-SQL

En el ejemplo siguiente se habilitan bases de datos independientes en la instancia del motor de base de datos de SQL Server.

sp_configure 'contained database authentication', 1;  
GO  
RECONFIGURE ;  
GO  

Habilitación de bases de datos independientes mediante Management Studio

En el ejemplo siguiente se habilitan bases de datos independientes en la instancia del motor de base de datos de SQL Server.

  1. En el Explorador de objetos, haga clic con el botón derecho en el nombre del servidor y, a continuación, haga clic en Propiedades.

  2. En la página Avanzada, en la sección Contención, establezca la opción Habilitar bases de datos contenidas en Verdadero.

  3. Haz clic en Aceptar.

Convertir una base de datos a parcialmente contenida

Una base de datos se convierte en una base de datos independiente cambiando la opción CONTAINMENT .

Convertir una base de datos a parcialmente contenida usando Transact-SQL

En el ejemplo siguiente se convierte una base de datos denominada Accounting en una base de datos parcialmente independiente.

USE [master]  
GO  
ALTER DATABASE [Accounting] SET CONTAINMENT = PARTIAL  
GO  

Convertir una base de datos en parcialmente independiente mediante Management Studio

En el ejemplo siguiente se convierte una base de datos en una base de datos parcialmente independiente.

  1. En el Explorador de objetos, expanda Bases de datos, haga clic con el botón derecho en la base de datos que se va a convertir y, a continuación, haga clic en Propiedades.

  2. En la página Opciones , cambie la opción Tipo de contención a Parcial.

  3. Haz clic en Aceptar.

Migración de usuarios a usuarios de base de datos independientes

En el siguiente ejemplo, se realiza la migración de todos los usuarios basados en inicio de sesión de SQL Server a usuarios de base de datos independiente con contraseñas. En el ejemplo se excluyen los inicios de sesión que no están habilitados. El ejemplo se debe ejecutar en la base de datos independiente.

DECLARE @username sysname ;  
DECLARE user_cursor CURSOR  
    FOR   
        SELECT dp.name   
        FROM sys.database_principals AS dp  
        JOIN sys.server_principals AS sp   
        ON dp.sid = sp.sid  
        WHERE dp.authentication_type = 1 AND sp.is_disabled = 0;  
OPEN user_cursor  
FETCH NEXT FROM user_cursor INTO @username  
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
        EXECUTE sp_migrate_user_to_contained   
        @username = @username,  
        @rename = N'keep_name',  
        @disablelogin = N'disable_login';  
    FETCH NEXT FROM user_cursor INTO @username  
    END  
CLOSE user_cursor ;  
DEALLOCATE user_cursor ;  

Véase también

Bases de datos independientes
sp_migrate_user_to_contained (Transact-SQL)
sys.dm_db_uncontained_entities (Transact-SQL)