Mam kartę danych A. Zawiera ona trochę danych. Utworzyłem kopię zapasową pliku A jako pliku A.bak . Następnie tworzę nową pustą bazę danych B. Następnie próbuję przywrócić B z A.bak . Ale usługa SQL Server informuje mnie o następującym błędzie:
Pliku „C: \ SQL Directory \ DATA \ A.mdf” nie można zastąpić. Jest używany przez bazę danych „A”.
Ale jeśli usunę A z SQL Server, retore będzie w porządku.
Nie rozumiem, dlaczego SQL musi pisać do oryginalnego pliku bazy danych podczas przywracania z osobnego pliku kopii zapasowej?
Dzięki ~
źródło
Podczas przywracania kopii zapasowej można określić pliki danych do przywrócenia.
Spójrz tu i tutaj . Możesz użyć opcji „Przywróć pliki bazy danych jako” i flagi „Zastąp istniejącą bazę danych”.
źródło
Czy używasz opcji REPLACE w poleceniu TSQL lub jako zaznaczone pole wyboru? Alternatywnie możesz zmienić nazwę plików i nazwać bazę danych czymś innym.
Trudno będzie również przywrócić dane z używanej bazy danych ... musisz zabić procesy korzystające z bazy danych; LUB najpierw upuść / usuń bazę danych, zamykając połączenia (jest to prawdopodobnie najłatwiejszy); LUB ustaw bazę danych, którą chcesz zastąpić, na coś w trybie ograniczonego użytkownika z natychmiastowym wycofaniem, więc mam nadzieję, że tylko DBA mogą użyć; LUB nawet zatrzymaj SQL Server i uruchom go ponownie - miejmy nadzieję, że przywracanie rozpocznie się, zanim ktokolwiek / cokolwiek użyje tej bazy danych.
PS na wszelki wypadek wykonaj kopię zapasową bazy danych, którą chcesz zastąpić.
źródło
Jeśli ktoś szuka rozwiązania w interfejsie GUI Management Studio po użyciu
Options
strony i aktywacjiOverwrite the existing database (WITH REPLACE)
opcji:Po prostu kliknij
Restore As
kolumnę i zmień nazwy*.mdf
plików i*.ldf
plików.źródło