Wie kann man eine "enthaltene" Datenbank wiederherstellen? [geschlossen]

23

Ich habe kürzlich versucht, eine Sicherungskopie von einer Netzwerkinstanz auf meinem lokalen Entwicklungs-SQL Server wiederherzustellen. Zu meiner Überraschung erhielt ich folgende Fehlermeldung:

Meldung 12824, Ebene 16, Status 1, Zeile 3 Der sp_configure-Wert "enthaltene Datenbankauthentifizierung" muss auf 1 gesetzt werden, um eine enthaltene Datenbank wiederherzustellen. Möglicherweise müssen Sie RECONFIGURE verwenden, um value_in_use festzulegen. Meldung 3013, Ebene 16, Status 1, Zeile 3 DATENBANK WIEDERHERSTELLEN wird abnormal beendet.

Welche Schritte muss ich ausführen, um die Datenbank erfolgreich wiederherzustellen?

David
quelle
2
Welche Version von SQL Server? Der Fehler ist ziemlich eindeutig in Bezug auf eine Auflösung. Haben Sie versucht, den contained database authenticationWert wie angegeben auf 1 zu setzen?
LowlyDBA
1
Ich denke, dass dies eine gültige Frage ist, wenn Sie versuchen, eine .bacpac-Datei der Azure Sql-Datenbank in Ihrer lokalen Instanz wiederherzustellen - Sie erhalten diesen Fehler. Die Antwort ist gültig, um dies zu beheben.
Ralph Willgoss

Antworten:

37

Um eine enthaltene Datenbank in einer anderen Instanz von SQL Server, in diesem Fall meinem lokalen Server, wiederherzustellen, muss die Eigenschaft " Enable Contained Databases " auf True gesetzt werden .

Sie können dies von Management Studio aus tun:

  1. Klicken Sie mit der rechten Maustaste auf die Serverinstanz und wählen Sie Eigenschaften
  2. Wählen Sie die Seite Erweitert aus , und setzen Sie unter Einschluss den Eigenschaftswert auf Wahr
  3. Fahren Sie mit der Wiederherstellung der Datenbanksicherung fort.
  4. ALTER AUTHORIZATION ON DATABASE::ReplaceThisWithYourDatabaseName TO ReplaceThisWithLeastPrivilegeUser;

Hier sind die Skriptzeilen, die ich tatsächlich zum Aktivieren / Deaktivieren von Containment verwendet habe:

-- 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;

Weitere Informationen finden Sie unter:
http://www.sqlsoldier.com/wp/sqlserver/protectionfromrestoringabackupofacontaineddatabase

David
quelle
2

Haben Sie versucht, das zu tun, was der Fehler beschreibt?

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
Prime03
quelle