Jak przywrócić „zamkniętą” bazę danych? [Zamknięte]

23

Ostatnio próbowałem przywrócić do mojego lokalnego rozwoju SQL Server kopię zapasową z instancji sieci. Ku mojemu zdziwieniu otrzymałem następujący komunikat o błędzie:

Msg 12824, poziom 16, stan 1, wiersz 3 Wartość sp_configure „uwierzytelnianie zawartej bazy danych” musi być ustawiona na 1, aby przywrócić zamkniętą bazę danych. Może być konieczne użycie RECONFIGURE, aby ustawić wartość_w_użytkowaniu. Msg 3013, poziom 16, stan 1, wiersz 3 PRZYWRÓĆ BAZY DANYCH kończy się nieprawidłowo.

Jakie kroki należy wykonać, aby pomyślnie przywrócić bazę danych?

David
źródło
2
Jaka wersja SQL Server? Błąd jest całkiem jasny w przypadku rozdzielczości. Czy próbowałeś ustawić contained database authenticationwartość na 1, tak jak to powiedziałem?
LowlyDBA,
1
Myślę, że to prawidłowe pytanie, jeśli próbujesz przywrócić plik .bacpac bazy danych SQL Azure do lokalnego wystąpienia - pojawia się ten błąd. Odpowiedź jest poprawna przy ustalaniu tego.
Ralph Willgoss

Odpowiedzi:

37

Aby przywrócić zawartą bazę danych do innej instancji serwera SQL, w tym przypadku mój serwer lokalny, właściwość „ Enable Contained Databases ” musi być ustawiona na True .

Możesz to zrobić ze studia zarządzania:

  1. Kliknij prawym przyciskiem myszy instancję serwera, wybierz Właściwości
  2. Wybierz opcję Strona zaawansowana , w obszarze Ogranicz wartość właściwości ustaw na Prawda
  3. Kontynuuj, aby przywrócić kopię zapasową bazy danych.
  4. ALTER AUTHORIZATION ON DATABASE::ReplaceThisWithYourDatabaseName TO ReplaceThisWithLeastPrivilegeUser;

Oto wiersze skryptu, których faktycznie użyłem do włączenia / wyłączenia powstrzymywania:

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

Aby uzyskać dodatkowe informacje, patrz:
http://www.sqlsoldier.com/wp/sqlserver/protectionfromrestoringabackupofacontaineddatabase

David
źródło
2

Czy próbowałeś zrobić to, co opisuje błąd?

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
źródło