部分的包含データベースへの移行
適用対象: SQL Server
このトピックでは、部分的包含データベース モデルへの変更を準備する方法を説明し、移行手順を示します。
このトピックの内容:
データベースを移行する準備
データベースを部分的包含データベース モデルに移行することを検討している場合は、次の点を確認してください。
部分的包含データベース モデルを理解している。 詳細については、「 包含データベース」を参照してください。
部分的包含データベースに固有のリスクを理解している。 詳細については、「 Security Best Practices with Contained Databases」を参照してください。
包含データベースは、レプリケーション、変更データ キャプチャ、または変更の追跡をサポートしていない。 データベースがこれらの機能を使用していないことを確認してください。
部分的包含データベースに関して変更されているデータベース機能の一覧を確認する。 詳細については、「変更された機能 (包含データベース)」を参照してください。
sys.dm_db_uncontained_entitiess (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)