如何还原“包含”数据库?[关闭]


23

我最近尝试将网络实例的备份还原到本地开发SQL Server。令我惊讶的是,我收到以下错误消息:

消息12824,级别16,状态1,行3必须将sp_configure值“包含数据库身份验证”设置为1,才能还原包含的数据库。您可能需要使用RECONFIGURE来设置value_in_use。消息3013,级别16,状态1,第3行RESTORE DATABASE正在异常终止。

要成功还原数据库,必须遵循哪些步骤?


2
什么版本的SQL Server?该错误对于分辨率非常清楚,您是否尝试contained database authentication像说的那样将值设置为1?
LowlyDBA 2015年

1
我认为这是一个有效的问题,如果您尝试将Azure Sql数据库.bacpac文件还原到本地实例中,则会出现此错误。答案对于解决此问题是有效的。
拉尔夫·威戈斯

Answers:


37

为了将包含的数据库还原到sql Server的其他实例中,在本例中为本地服务器,必须将“ 启用包含的数据库 ”属性设置为True

您可以从管理工作室执行以下操作:

  1. 右键单击服务器实例,选择“ 属性”。
  2. 选择高级下页,一套遏制属性值,以
  3. 继续还原数据库备份。
  4. ALTER AUTHORIZATION ON DATABASE::ReplaceThisWithYourDatabaseName TO ReplaceThisWithLeastPrivilegeUser;

这是我实际上用于启用/禁用遏制的脚本行:

-- Enable "contained database authentication"
EXEC sp_configure 'contained', 1;
RECONFIGURE;

-- Disable "contained database authentication"
EXEC sp_configure 'contained', 0;
-- Force disabling of "contained database authentication"
RECONFIGURE WITH OVERRIDE;

有关其他信息,请参阅:http :
//www.sqlsoldier.com/wp/sqlserver/protectionfromrestoringabackupofcontained数据库


2

您是否尝试过执行错误所描述的内容?

USE master
GO
sp_configure 'show   advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1
GO
RECONFIGURE
GO
sp_configure 'show   advanced options', 0 
GO
RECONFIGURE
GO
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.