Share via


部分的包含データベースへの移行

このトピックでは、部分的包含データベース モデルへの変更を準備する方法を説明し、移行手順を示します。

このトピックの内容

  • データベースを移行する準備

  • 部分的包含データベースの有効化

  • 部分的包含へのデータベースの変換

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

データベースを移行する準備

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

  • 部分的包含データベース モデルを理解している。 詳細については、「包含データベース」を参照してください。

  • 部分的包含データベースに固有のリスクを理解している。 詳細については、「包含データベースでのセキュリティのベスト プラクティス」を参照してください。

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

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

  • 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)

概念

包含データベース