Używam programu SQL Server 2008 R2 Standard (wersja 10.50.1600.1) dla mojej produkcyjnej witryny sieci Web i wersji SQL Server Express z usługami zaawansowanymi (wersja 10.50.1600.1) dla mojego hosta lokalnego jako bazy danych.
Kilka dni temu mój SQL Server uległ awarii i musiałem zainstalować nową wersję 2008 R2 Express na moim hoście lokalnym. Działało dobrze, gdy przywróciłem niektóre starsze wersje pobrane z edycji Express, ale gdy próbuję przywrócić bazę danych z .bak
pliku pobranego z serwera produkcyjnego, powoduje to następujący błąd:
Błąd: określona obsada jest nieprawidłowa. (SqlManagerUI)
i kiedy próbuję przywrócić bazę danych za pomocą polecenia
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Generuje inny błąd
Msg 3154, poziom 16, stan 4, wiersz 1
Zestaw kopii zapasowych zawiera kopię zapasową bazy danych innej niż istniejąca baza danych „Publikacje”.
Msg 3013, poziom 16, stan 1, wiersz 1
RESTORE DATABASE kończy się nieprawidłowo.
Sprawdziłem wersje. Wszystkie wydają się pasować do mnie, jak pokazano na poniższym obrazku
Wcześniej udało mi się przywrócić bazę danych z wersji standardowej do wersji ekspresowej, ale teraz to się nie udaje. Usunąłem bazę danych i próbowałem ją odtworzyć. To też zawodzi.
Nie jestem pewien, co robię źle. Byłbym wdzięczny za pomoc w tej sprawie
Problem został rozwiązany, ponieważ wygląda na to, że plik .bak był uszkodzony. Kiedy próbowałem to z innym plikiem, zadziałało.
źródło
,REPLACE
do polecenia T-SQL, aby nadpisać istniejącą bazę danych AlHabtoorPublications.Odpowiedzi:
Graficzny interfejs użytkownika może być czasami zmienny. Błąd, który wystąpił podczas korzystania z T-SQL, polega na tym, że próbujesz zastąpić istniejącą bazę danych, ale nie określono, aby nadpisać / zastąpić istniejącą bazę danych. Poniższe mogą działać:
Use Master Go RESTORE DATABASE Publications FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak' WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' , REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
źródło
, REPLACE
Failed: 38
wskazujereached end of the file
. (W oknie poleceń uruchomNET HELPMSG 38
). To zwykle wskazuje na uszkodzoną kopię zapasową: stackoverflow.com/questions/5656363/ ...Może to być spowodowane przywróceniem pliku kopii zapasowej wersji programu SQL Server 2012 do programu SQL Server 2008 R2 lub nawet niższego.
źródło
W końcu pojawił się ten błąd, aby przejść do przywracania. Przeniosłem się na SQL2012 z frustracji, ale myślę, że to prawdopodobnie nadal będzie działać w 2008R2. Musiałem użyć logicznych nazw:
RESTORE FILELISTONLY FROM DISK = ‘location of your.bak file’
Stamtąd uruchomiłem instrukcję przywracania z
MOVE
użyciem nazw logicznych.RESTORE DATABASE database1 FROM DISK = '\\database path\database.bak' WITH MOVE 'File_Data' TO 'E:\location\database.mdf', MOVE 'File_DOCS' TO 'E:\location\database_1.ndf', MOVE 'file' TO 'E:\location\database_2.ndf', MOVE 'file' TO 'E:\location\database_3.ndf', MOVE 'file_Log' TO 'E:\location\database.ldf'
Kiedy skończył się przywracanie, prawie zapłakałem z radości.
Powodzenia!
źródło
Poniżej mogą być 2 przyczyny tego problemu:
Kopia zapasowa wykonana w SQL 2012, a Restore Headeronly została wykonana w SQL 2008 R2
Nośnik kopii zapasowej jest uszkodzony.
Jeśli uruchomimy poniższe polecenie, zawsze możemy znaleźć rzeczywisty błąd:
restore headeronly from disk = 'C:\Users\Public\Database.bak'
Podaj pełną lokalizację pliku bazy danych w cudzysłowie
Mam nadzieję, że to pomoże
źródło