本主题讨论如何准备更改为部分包含的数据库模型,然后提供迁移步骤。
本主题内容:
准备迁移数据库
考虑将数据库迁移到部分包含的数据库模型时,请查看以下项。
您应了解部分包含的数据库模型。 有关详细信息,请参阅 Contained Databases。
你应该了解部分包含的数据库特有的风险。 有关详细信息,请参阅 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。
单击 “确定” 。
将数据库转换为部分容器式
通过更改 CONTAINMENT 选项将数据库转换为包含的数据库。
使用 Transact-SQL 将数据库转换为部分包含的数据库
以下示例将命名 Accounting
的数据库转换为部分包含的数据库。
USE [master]
GO
ALTER DATABASE [Accounting] SET CONTAINMENT = PARTIAL
GO
使用 Management Studio 将数据库转换为部分包含数据库
以下示例将数据库转换为部分包含的数据库。
在对象资源管理器中,展开 “数据库”,右键单击要转换的数据库,然后单击“ 属性”。
在 “选项” 页上,将 “包含类型 ”选项更改为 “部分”。
单击 “确定” 。
将用户迁移到受限数据库用户
以下示例将所有基于 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)