Compartilhar via


Migrar para um banco de dados parcialmente contido

Este tópico discute como se preparar para alterar o modelo de banco de dados parcialmente contido e, em seguida, fornece as etapas de migração.

Neste tópico:

Preparando para migrar um banco de dados

Examine os itens a seguir ao considerar a migração de um banco de dados para o modelo de banco de dados parcialmente contido.

  • Você deve entender o modelo de banco de dados parcialmente contido. Para obter mais informações, veja Bancos de dados independentes.

  • Você deve entender os riscos exclusivos de bancos de dados parcialmente contidos. Para obter mais informações, consulte Security Best Practices with Contained Databases.

  • Os bancos de dados independentes não dão suporte à replicação, à captura de dados de alterações ou ao rastreamento de alterações. Confirme se o banco de dados não usa esses recursos.

  • Examine a lista de recursos de banco de dados modificados para bancos de dados parcialmente contidos. Para obter mais informações, consulte Recursos Modificados (Banco de Dados Contido).

  • Consulte sys.dm_db_uncontained_entities (Transact-SQL) para localizar objetos ou recursos não contidos no banco de dados. Para saber mais, confira.

  • Monitore o database_uncontained_usage XEvent para ver quando recursos não contidos são usados.

Habilitar bancos de dados independentes

Os bancos de dados contidos devem ser habilitados na instância do Mecanismo de Banco de Dados do SQL Server, antes que possam ser criados.

Habilitar bancos de dados contidos usando Transact-SQL

O exemplo a seguir habilita bancos de dados contidos na instância do Mecanismo de Banco de Dados do SQL Server.

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

Habilitar bancos de dados independentes usando o Management Studio

O exemplo a seguir habilita bancos de dados contidos na instância do Mecanismo de Banco de Dados do SQL Server.

  1. No Pesquisador de Objetos, clique com o botão direito do mouse no nome do servidor e clique em Propriedades.

  2. Na página Avançado, na seção Contenção, defina a opção Habilitar Bancos de Dados Independentes como True.

  3. Clique em OK.

Convertendo um banco de dados em um banco de dados parcialmente contido

Um banco de dados é convertido em um banco de dados independente alterando a opção CONTAINMENT .

Convertendo um banco de dados em parcialmente contido usando Transact-SQL

O exemplo a seguir converte um banco de dados nomeado Accounting em um banco de dados parcialmente contido.

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

Convertendo um banco de dados em parcialmente contido usando o Management Studio

O exemplo a seguir converte um banco de dados em um banco de dados parcialmente contido.

  1. No Pesquisador de Objetos, expanda Bancos de Dados, clique com o botão direito do mouse no banco de dados a ser convertido e clique em Propriedades.

  2. Na página Opções , altere a opção de tipo de contenção para Parcial.

  3. Clique em OK.

Migrando usuários para usuários de banco de dados independentes

O exemplo a seguir migra todos os usuários baseados em logons do SQL Server para usuários de bancos de dados independentes com senhas. O exemplo exclui logons que não estão habilitados. O exemplo deve ser executado no banco de dados independente.

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 ;  

Consulte Também

Bancos de dados independentes
sp_migrate_user_to_contained (Transact-SQL)
sys.dm_db_uncontained_entities (Transact-SQL)