Zaimportuj plik .bak do bazy danych na serwerze SQL

230

Mam plik z .bakrozszerzeniem.

Jak mogę zaimportować tę datę do bazy danych w SQL Server?

alex
źródło
Zakładam, że używasz MSSQL, oto wątek wyjaśniający kilka sposobów przywracania.
Andrew Keith,
Możesz utworzyć pustą bazę danych i przywrócić dane do pustej bazy danych, używając swojego .bak
Michel Ayres
Najprostszym sposobem jest trzecia odpowiedź, bazy danych po kliknięciu prawym przyciskiem myszy, import, urządzenie, wybór pliku .bak, zakończony.
Mafii,
Czy ktoś może rozszerzyć odpowiedź na rozwiązanie przyjazne dla automatyzacji? Przejście przez interfejs użytkownika i wykonanie kilku kliknięć nie jest zbyt wydajne.
L. Holanda,

Odpowiedzi:

251

W SQL Server Management Studio

  1. Kliknij prawym przyciskiem myszy Bazy danych w lewym okienku (Object Explorer)
  2. Kliknij Przywróć bazę danych ...
  3. Wybierz Urządzenie , kliknij ...i dodaj plik .bak
  4. Kliknij OK , a następnie OK ponownie

Gotowe.

Marcelo Mason
źródło
4
To działa jak urok. Są to doskonałe uproszczone instrukcje i są to w zasadzie te same instrukcje z oficjalnego łącza Microsoft odnotowanego w najczęściej głosowanej odpowiedzi tutaj.
Leonardo Lopez
3
Jeśli to się nie powiedzie, prawdopodobnie musisz usunąć istniejącą bazę danych.
DigitalDesignDj
3
To nie działa dla mnie. Wskazuję właściwy folder i nawet nie widzi plików. Wklejam dokładną nazwę pliku w oknie dialogowym i mówi, że plik nie istnieje. Ponadto w oknie dialogowym znajduje się dysk, który nie istnieje na moim serwerze. Czy baza danych pamięta lokalizację ostatniej kopii zapasowej i czy akceptuje przywracanie tylko od tego momentu? Uważam za bardzo dziwne, że nie mogę wybrać pliku kopii zapasowej do przywrócenia.
James
13
Mój plik .BAK znajdował się w katalogu „Pobrane”, który istniał pod moim kontem użytkownika. Musiałem przenieść plik .BAK do katalogu głównego C: aby to narzędzie mogło go zobaczyć i pozwolić mi go przywrócić. Pliki pod moim użytkownikiem po prostu nie były widoczne z jakiegoś powodu.
jeremysawesome
6
To nie działa. Klikam prawym przyciskiem myszy „Bazy danych”, ale nie ma „Przywróć bazę danych ...”.
user34660,
53

Pliki .bak to kopie zapasowe bazy danych. Możesz przywrócić kopię zapasową za pomocą poniższej metody:

Instrukcje: przywracanie kopii zapasowej bazy danych (SQL Server Management Studio)

Jon Schoning
źródło
8
To nie działa. Artykuł mówi: „... 2) Rozwiń bazy danych. W zależności od bazy danych wybierz bazę danych użytkownika lub rozwiń bazę danych systemu, a następnie wybierz bazę danych systemu. 3) Kliknij bazę danych prawym przyciskiem myszy , wskaż polecenie Zadania, a następnie kliknij polecenie Przywracać." NIE! Nie można kliknąć prawym przyciskiem myszy bazy danych, która nie istnieje! W końcu próbujesz przywrócić lub zaimportować daną bazę danych. Jak kliknąć prawym przyciskiem myszy bazę danych, która nie jest załadowana? Dziwne z MSDN i pogarszające tę funkcję przywracania w SSMS jest określone, ale nie działa. Czemu? Na szczęście polecenia SQL, które inni dają tutaj, działają.
Nicholas Petersen
14
Istnieje inny artykuł dotyczący przywracania do nowej bazy danych: msdn.microsoft.com/en-us/library/ms186390(v=sql.90).aspx
Jon Schoning
35
RESTORE FILELISTONLY 
FROM DISK = 'D:\3.0 Databases\DB.bak' 

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak' 

i musisz przenieść odpowiednie pliki mdf, ndf i ldf za pomocą

 With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
 Move 'secondarydatafile'To 'D:\DB\data1.ndf', 
 Move 'logfilename' To 'D:\DB\log.ldf'
RameshVel
źródło
1
Było to dla mnie bardzo pomocne, ponieważ chciałem przywrócić plik .bak do kontenera Docker sql z hostem macOS za pomocą Azure Data Studio. Wszystko, co musiałem zrobić, to skopiować plik .bak do kontenera, dostosować ścieżkę i zmienić na / i udało mi się pomyślnie przywrócić.
andrewb
Cieszę się, że pomógł @andrewb :)
RameshVel
30

Możesz po prostu przywrócić te pliki kopii zapasowej bazy danych przy użyciu rodzimych metod SQL Server lub użyć ApexSQL Restore narzędzia , aby szybko wirtualnie dołączyć pliki i uzyskać do nich dostęp jako w pełni przywrócone bazy danych.

Oświadczenie: Pracuję jako inżynier wsparcia produktu w ApexSQL

Ivan Stankovic
źródło
18

Zamiast wybrać Przywróć bazę danych ..., wybierz Przywróć pliki i aplikacje ...

Następnie wprowadź nazwę bazy danych, wybierz ścieżkę do pliku .bak jako źródło, zaznacz pole wyboru przywracania i kliknij OK. Jeśli plik .bak jest prawidłowy, będzie działać.

(Nazwy opcji przywracania programu SQL Server nie są intuicyjne w przypadku bardzo prostego zadania).

James Lawruk
źródło
To dobra rada, zrobiłem to i zgłosiłem, że przywracanie zakończyło się powodzeniem. Pozostaje jednak pewien problem ... baza danych nie jest wymieniona w eksploratorze obiektów. Próbuję „załączyć”, a nawet ma dostępny prawidłowy plik .mdf (zakładam, że jest to produkt przywracania). Gdy spróbuję dołączyć, zgłasza błąd, że jest już w użyciu. Czy masz jakieś wskazówki dotyczące tego etapu?
AlanSE
Pamiętaj, aby odświeżyć na końcu, aby zobaczyć nową bazę danych. To może być najszybsze rozwiązanie do uruchomienia.
demongolem
Ta opcja działała dla mnie, gdy chcę zaimportować lokalnie tę samą bazę danych .bak jako nową bazę danych
Gurnzbot
7
  1. Połącz się z serwerem, na którym chcesz przechowywać swoją bazę danych
  2. Kliknij prawym przyciskiem myszy Baza danych
  3. Kliknij Przywróć
  4. Wybierz urządzenie przycisk radiowy w sekcji źródła
  5. Kliknij Dodaj.
  6. Przejdź do ścieżki, w której jest przechowywany plik .bak, wybierz go i kliknij OK
  7. Wprowadź miejsce docelowe swojej bazy danych
  8. Wpisz nazwę, pod którą chcesz przechowywać swoją bazę danych
  9. Kliknij OK

Gotowe

Yash Saraiya
źródło
4

Po prostu użyj

sp_restoredb „Twoja baza danych”, „Lokalizacja z której chcesz przywrócić”

Przykład: sp_restoredb 'omDB', 'D: \ abc.bak'

Omprakash tomar
źródło
jaka jest różnica między tym a RESTORE DATABASEjak w msdn.microsoft.com/en-us/library/ms178099(v=sql.105).aspx ?
młot
1
Przywróć bazę danych wykonaj operację przywracania tylko wtedy, gdy struktura bazy danych jest taka sama jak plik kopii zapasowej, ale sp_restoredbprzywróć nawet bazę danych o innej strukturze lub całkowicie pustą (nową).
Omprakash tomar
3
  1. Skopiuj plik kopii zapasowej .bak do następującej lokalizacji komputera: C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Połącz się z serwerem, na którym chcesz przechowywać swoją bazę danych
  3. Kliknij prawym przyciskiem myszy Baza danych
  4. Kliknij Przywróć
  5. Wybierz przycisk radiowy Urządzenie w sekcji źródła
  6. Kliknij Dodaj.
  7. Przejdź do ścieżki, w której jest przechowywany plik .bak, wybierz go i kliknij OK
  8. Wprowadź miejsce docelowe swojej bazy danych
  9. Wpisz nazwę, pod którą chcesz przechowywać swoją bazę danych
  10. Kliknij OK

Powyższe rozwiązania pominęły miejsce przechowywania pliku kopii zapasowej (.bak). To powinno załatwić sprawę. To zadziałało dla mnie.

Madhumita
źródło
1

Możesz użyć pakietu węzłów, jeśli często trzeba przywracać bazy danych w procesie programowania.

Zainstalować:

npm install -g sql-bak-restore

Stosowanie:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

Argumenty:

  • ścieżka, względna lub bezwzględna ścieżka do pliku
  • dbName, do której bazy danych ma zostać przywrócona (!! baza danych o tej nazwie zostanie usunięta, jeśli istnieje !!)
  • oldDbName, nazwa bazy danych (jeśli nie wiesz, podaj coś i uruchom, po uruchomieniu zobaczysz dostępne bazy danych).
  • właściciel, nazwa_użytkownika, aby utworzyć i nadać mu uprawnienia db_owner (hasło „1”)

!! sqlcmdNarzędzie wiersza polecenia powinno znajdować się w zmiennej PATH.

https://github.com/vladimirbuskin/sql-bak-restore/

Vladimir Buskin
źródło
1

W Microsoft SQL Server Management Studio 2019:

wprowadź opis zdjęcia tutaj

W oknie Przywróć bazę danych:

  1. Wybierz urządzenie

  2. Wybierz Dodaj i wybierz plik docelowy

  3. OK, aby potwierdzić

  4. OK, aby potwierdzić przywrócenie

wprowadź opis zdjęcia tutaj

Weky
źródło