次の方法で共有


部分コンテインドデータベースへの移行

このトピックでは、部分的に包含されたデータベース モデルに変更する準備を行い、移行手順について説明します。

このトピックの内容:

データベースの移行の準備

部分的に包含されたデータベース モデルへのデータベースの移行を検討する場合は、次の項目を確認してください。

  • 部分的に包含されたデータベース モデルを理解する必要があります。 詳細については、「 包含データベース」を参照してください。

  • 部分的に包含されたデータベースに固有のリスクを理解する必要があります。 詳細については、「 Security Best Practices with Contained Databases」を参照してください。

  • 包含データベースは、レプリケーション、変更データ キャプチャ、または変更の追跡をサポートしていません。 データベースでこれらの機能が使用されていないことを確認します。

  • 部分的包含データベースに対して変更されたデータベース機能の一覧を確認します。 詳細については、「 変更された機能 (包含データベース)」を参照してください。

  • sys.dm_db_uncontained_entities (Transact-SQL) にクエリを実行して、データベース内の非包含オブジェクトまたはフィーチャを検索します。 詳細については、参照してください。

  • database_uncontained_usage XEvent を監視して、非包含フィーチャーがいつ使用されているかを確認します。

包含データベースを有効にする

包含データベースを作成するには、SQL Server データベース エンジンのインスタンスで包含データベースを有効にする必要があります。

Transact-SQL を使用した包含データベースの有効化

次の例では、SQL Server データベース エンジンのインスタンスで包含データベースを有効にします。

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

Management Studio を使用した包含データベースの有効化

次の例では、SQL Server データベース エンジンのインスタンスで包含データベースを有効にします。

  1. オブジェクト エクスプローラーで、サーバー名を右クリックし、[ プロパティ] をクリックします。

  2. [ 詳細設定 ] ページの [ 包含 ] セクションで、[ 包含データベースを有効にする] オプションを True に設定 します

  3. OK をクリックします。

データベースを部分的包含に変換する

CONTAINMENT オプションを変更すると、データベースは包含データベースに変換されます。

Transact-SQL を使用したデータベースの部分的に含まれた状態への変換

次の例では、 Accounting という名前のデータベースを、部分的に包含されたデータベースに変換します。

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

Management Studio を使用したデータベースの部分的に包含された状態への変換

次の例では、データベースを部分的に含まれるデータベースに変換します。

  1. オブジェクト エクスプローラーで、[ データベース] を展開し、変換するデータベースを右クリックし、[ プロパティ] をクリックします。

  2. [ オプション ] ページで、[ 包含の種類 ] オプションを [部分] に変更します。

  3. OK をクリックします。

包含データベース ユーザーへのユーザーの移行

次の例では、SQL Server ログインに基づくすべてのユーザーを、パスワードを持つ包含データベース ユーザーに移行します。 この例では、有効になっていないログインは除外されます。 この例は、包含データベースで実行する必要があります。

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 ;  

こちらもご覧ください

包含データベース
sp_migrate_user_to_contained (Transact-SQL)
sys.dm_db_uncontained_entities (Transact-SQL)