rodzina multimediów na urządzeniu jest niepoprawnie utworzona. SQL Server nie może przetworzyć tej rodziny mediów

31

Próbuję przywrócić plik .BAK na serwerze SQL, ale pojawia się następujący błąd:

Msg 3241, poziom 16, stan 7, wiersz 1 Rodzina multimediów na urządzeniu „c: \ glyn \ JA.bak” jest niepoprawnie utworzona. SQL Server nie może przetworzyć tej rodziny mediów. Msg 3013, poziom 16, stan 1, wiersz 1 PRZYWRÓĆ BAZY DANYCH kończy się nienormalnie.

Próbowałem przywrócić za pomocą 2012, 2008, a nawet 2005, ale nic nie działa, użyłem następującej kwerendy i za pośrednictwem, Tasks >> Back upale nic nie działa, oto mój SQL:

RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'

Czy ktoś ma jakieś sugestie? Czytałem, że bak może być uszkodzony, został wysłany do mnie przez innego programistę na DVD, który pracuje nad projektem.

Odjechany
źródło

Odpowiedzi:

12

Jeśli próbujesz przywrócić nowszą bazę danych do starszej wersji SQL, zawsze możesz po prostu ręcznie utworzyć bazę danych w starszej wersji SQL i skorzystać z zadania - wygenerować skrypty i dołączyć dane.

Zapisz w pliku -> Zaawansowane -> Typy danych do skryptu -> Schemat i dane .

Upewnij się także, że w Skrypcie dla wersji serwera .

To może być jedyna obsługiwana opcja, jeśli próbujesz przejść z nowszej wersji SQL Server do starszej wersji.

Powiązane: Przywrócić kopię zapasową SQL Server 2012 do bazy danych SQL Server 2008?

A. Thomas
źródło
Wygląda jak włamanie, ale myślę, że w moim przypadku rozwiązało to ten problem.
jpierson
7

Znalazłem informację , że plik kopii zapasowej jest uszkodzony. Prawdopodobnie przesyłane przez FTP w trybie tekstowym, a nie binarnym.

I ten blog, w którym wymieniono, jak ktoś inny rozwiązał ten sam problem.

Kenneth Fisher
źródło
8
„wymienia, jak ktoś inny rozwiązał ten sam problem”, ogólnie na stronach sieci SE, należy opublikować odpowiednie fragmenty rzeczy, takie jak posty na blogu; zapobiega rozpadowi łącza
jcollum
6

Miałem ten sam problem, mój skrypt określał niepoprawny typ PLIKU, miałem .baki określałem, FILE = 2który jest .trn.

USE [master]
RESTORE DATABASE [MyNewDB] FROM
DISK = N'D:\MyOldDB.bak'
WITH
    FILE = 1, -- 1 = .bak, 2 = .trn type backup
    MOVE N'MyOldDB' TO N'd:\data\MyOldDB.mdf',
    MOVE N'MyOldDB_log' TO N'd:\data\MyOldDB_log.ldf',
    NOUNLOAD,
    STATS = 5    
GO

Nie jestem pewien, czy polecenie PRZYWRÓĆ automatycznie wykrywa lub ustawia wartość domyślną dla tego ...

sonjz
źródło
1
Błąd odwraca się, problem polega na tym, że podczas przywracania baz danych używasz GUI, SQL Managment Studio nie dostarcza szczegółowych informacji. Jeśli spróbujesz przywrócić za pomocą skryptu t-sql, serwer sql zgłosi użycie opcji MOVE.
dlopezgonzalez,
5

Uruchom następujący skrypt na źródłowym i docelowym serwerze SQL, wersje powinny być zgodne lub docelowa powinna mieć wyższą wersję SQL Server, w przeciwnym razie nie można przywrócić pliku .bak:

SELECT @@Version
Shadi Namrouti
źródło
1
Punkt dotyczący wersji został powtórzony w innych odpowiedziach.
Andriy M,
1
@AndriyM masz rację, ale brakowało praktycznego działania. Nie mówimy o historii ani geografii, należy wspomnieć o poleceniu lub kodzie.
Shadi Namrouti
-4

usuń uszkodzony plik i ponownie uruchom kopię zapasową

Twoja mama
źródło
4
Cześć, Witam na stronie. Chcemy nieco bardziej szczegółowo wyjaśnić, dlaczego i jak to miałoby działać.
Tom V - Team Monica