このトピックでは、部分的に包含されたデータベース モデルに変更する準備を行い、移行手順について説明します。
このトピックの内容:
データベースの移行の準備
部分的に包含されたデータベース モデルへのデータベースの移行を検討する場合は、次の項目を確認してください。
部分的に包含されたデータベース モデルを理解する必要があります。 詳細については、「 包含データベース」を参照してください。
部分的に包含されたデータベースに固有のリスクを理解する必要があります。 詳細については、「 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 データベース エンジンのインスタンスで包含データベースを有効にします。
オブジェクト エクスプローラーで、サーバー名を右クリックし、[ プロパティ] をクリックします。
[ 詳細設定 ] ページの [ 包含 ] セクションで、[ 包含データベースを有効にする] オプションを True に設定 します。
OK をクリックします。
データベースを部分的包含に変換する
CONTAINMENT オプションを変更すると、データベースは包含データベースに変換されます。
Transact-SQL を使用したデータベースの部分的に含まれた状態への変換
次の例では、 Accounting
という名前のデータベースを、部分的に包含されたデータベースに変換します。
USE [master]
GO
ALTER DATABASE [Accounting] SET CONTAINMENT = PARTIAL
GO
Management Studio を使用したデータベースの部分的に包含された状態への変換
次の例では、データベースを部分的に含まれるデータベースに変換します。
オブジェクト エクスプローラーで、[ データベース] を展開し、変換するデータベースを右クリックし、[ プロパティ] をクリックします。
[ オプション ] ページで、[ 包含の種類 ] オプションを [部分] に変更します。
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)