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


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


我必须遵循哪些步骤才能成功恢复数据库?

评论

什么版本的SQL Server?有关解决方案的错误非常清楚,您是否尝试像说的那样将包含的数据库身份验证值设置为1?

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

您是否要添加@RalphWillgoss答案?

@MichaelGreen已经有一段时间了,但是我相信接受的答案对于这种情况是正确的。

#1 楼

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

您可以从Management Studio进行此操作:


右键单击服务器实例,选择“属性”

选择“高级”页面,在“包含”下将属性值设置为True

继续恢复数据库备份。
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/protectionfromrestingingabackupofcontaineddatabase

#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