迁移到部分包含的数据库
本主题讨论要更改为部分包含的数据库模型的准备工作,接着提供了迁移步骤。
本主题内容:
准备迁移数据库
启用部分包含的数据库
将数据库转换为部分包含的数据库
将用户迁移为包含的数据库用户
准备迁移数据库
在考虑将数据库迁移到部分包含的数据库模型时,请复查以下各项。
您应该了解部分包含的数据库模型。 有关详细信息,请参阅包含数据库。
您应该了解部分包含的数据库所独有的风险。 有关详细信息,请参阅针对包含数据库的安全性最佳方法。
包含的数据库不支持复制、变更数据结构或更改跟踪。 确认数据库没有使用这些功能。
复查为了部分包含的数据库而修改的数据库功能的列表。 有关详细信息,请参阅经过修改的功能(包含数据库)。
对 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)