Jak przywrócić wiele baz danych w SQL Server (3 metody)

Jak przywrócić jednocześnie wiele baz danych w SQL Serverze? Zazwyczaj można użyć wydajnego skryptu T-SQL lub spróbować potężnego oprogramowania z mniejszymi ograniczeniami.

Alex

By Alex Updated on March 21, 2025

Share this: instagram reddit

Czy możesz przywrócić wiele baz danych SQL naraz?

Jest przykro nam, ale interfejs graficzny SSMS obsługuje tylko przywracanie jednej bazy danych na raz. Jeśli wykonałeś kopię zapasową kilku baz danych do różnych plików BAK, czy można je wszystkie przywrócić naraz?

Odpowiedź brzmi TAK. Ogólnie rzecz biorąc, możesz użyć prawidłowego skryptu T-SQL, aby przywrócić wiele baz danych naraz, ale tylko wtedy, gdy pliki kopii zapasowych mają dokładnie nazwy odpowiadające bazom danych i nie zawierają dodatkowych informacji, takich jak data/czas.

Jeśli chcesz mieć większą elastyczność, istnieje również proste alternatywne rozwiązanie z interfejsem graficznym użytkownika. Wybierz tylko sposób, który preferujesz.

sql server

Wymagania przed przywróceniem kilku baz danych w SQL Server

Przywracanie kilku baz danych w SQL Server może być procesem skomplikowanym. Aby zminimalizować okres niedostępności, przed rozpoczęciem należy spełnić kilka wymagań wstępnych:

  • Mieć uprawnienia administratora i dostęp do plików kopii zapasowych.
  • Każdy plik kopii zapasowej powinien odpowiadać jednej bazie danych.
  • Plik kopii zapasowej powinien zawierać tylko dwa pliki bazy danych: plik dziennika i plik danych.
  • Ponieważ używamy nazwy bazy danych do nazywania jej fizycznych plików na dysku, znaki dozwolone w nazwach plików fizycznych nowo przywracanej bazy danych muszą być dozwolone.

Sposób 1. Przywracanie wielu baz danych z plików BAK za pomocą xp_cmdshell

Możesz użyć skryptu do przywracania wielu baz danych w SQL Server z folderu. Przed tym jednak połącz się z instancją i włącz xp_cmdshell.

1. Kliknij Nowe zapytanie i wpisz następującą komendę:

-- Aby umożliwić zmianę zaawansowanych opcji.
EXEC sp_configure "show advanced options", 1;

GO
-- Aby zaktualizować bieżącą wartość opcji zaawansowanych.
RECONFIGURE;
GO
-- Aby włączyć funkcję.
EXEC sp_configure "xp_cmdshell", 1;
GO
-- Aby zaktualizować bieżącą wartość dla tej funkcji.
RECONFIGURE;
GO

Wykonaj zapytanie, a funkcja zostanie włączona.

enable xp cmdshell

2. Następnie możesz przywrócić wiele baz danych SQL Server za pomocą skryptu (proszę zamienić „D:\backup\” na własny katalog zawierający wszystkie pliki kopii zapasowych):

DECLARE @FilesCmdshell TABLE (
outputCmd NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)

INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell "dir /B D:\backup\*.bak"
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell

OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd NVARCHAR(MAX) = "RESTORE DATABASE [" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) "] FROM DISK = N"'D:\backup\" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) ".bak"' WITH FILE = 1, NOUNLOAD, STATS = 10"
EXEC(@cmd)

FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END

restore multiple databases

✎Uwaga: Jeśli otrzymasz błąd „Końcówka dziennika bazy danych nie została zabezpieczona. Użyj polecenia BACKUP LOG WITH NORECOVERY, aby wykonać kopię zapasową dziennika, jeśli zawiera on pracę, której nie chcesz stracić. Użyj klauzuli WITH REPLACE lub WITH STOPAT instrukcji RESTORE, aby nadpisać zawartość dziennika”, rozwiązanie jest właśnie takie, jak sugeruje komunikat.

Na przykład możesz zmodyfikować polecenie przywracania do „…WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10”

Metoda 2. Generowanie skryptu do przywracania wszystkich baz danych w SQL Server

Alternatywnie, można użyć skryptu do generowania poleceń przywracania dla wszystkich baz danych w SQL Server i połączyć je jako nowy skrypt do wykonania.

1. Kliknij Nowe zapytanie i wprowadź następujące polecenia w oknie SQLQuery:

DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath = "D:\Backup\" -- Lokalizacja kopii zapasowych
SELECT "RESTORE DATABASE[" NAME "] FROM DISK = "'" @folderpath name ".bak"' WITH NORECOVERY,
REPLACE, STATS = 5"
FROM master.sys.databases
WHERE name NOT IN ("master","model","msdb","tempdb","distribution")

To spowoduje wygenerowanie serii poleceń do przywracania wielu baz danych w SQL Server z plików bak o tych samych nazwach.

2. Kliknij prawym przyciskiem myszy dowolne polecenie z Rezultatów, wybierz Zaznacz wszystko, a następnie Kopiuj je (lub użyj Ctrl A i Ctrl C).

generate commands

3. Wklej te polecenia do okna SQLQuery jako nowy skrypt do Wykonania. Spowoduje to przywrócenie wszystkich baz danych SQL Server z plików bak o odpowiednich nazwach plików.

restore all databases

Metoda 3. Tworzenie kopii zapasowych i przywracanie wielu baz danych SQL za pomocą interfejsu graficznego (najłatwiejsza)

Wyżej wymienione skrypty są stosowane tylko wtedy, gdy pliki bak mają dokładnie takie same nazwy jak bazy danych SQL, co jest dość ograniczające w praktyce. Dlatego chciałbym zaproponować bardziej wygodny sposób tworzenia kopii zapasowych i przywracania wielu baz danych, a nawet całej instancji.

AOMEI Cyber Backup to niezawodne rozwiązanie zarządzania w centralnym miejscu do tworzenia kopii zapasowych i przywracania baz danych SQL na wszystkich komputerach stacjonarnych, laptopach i serwerach w ramach sieci LAN.

Działa na systemach Windows 11/10/8.1/8/7, Windows Server 2022/2019/2016/2012 (R2)/2008 (R2) i obsługuje tworzenie kopii zapasowych dla systemu SQL Server 2005 do 2022. Oprócz bazy danych SQL, obsługuje również tworzenie kopii zapasowych maszyn wirtualnych Hyper-V i VMware.

Pobierz wersję próbną za darmoMicrosoft SQL Server 2005-2022
Centralne i bezpieczne tworzenie kopii zapasowych SQL
  • Uruchom pobrany plik .exe, aby zainstalować AOMEI Cyber Backup i uruchomić jego główny interfejs. Kliknij Urządzenie źródłowe -> Microsoft SQL -> Dodaj Microsoft SQL.

Microsoft SQL

  • Wybierz Pobierz program proxy lub Kopiuj link, aby pobrać program agenta i zainstaluj go na urządzeniu, na którym zainstalowany jest SQL Server. Następnie przejdź do Proxy już zainstalowane, aby wybrać urządzenie.
  • Następnie kliknij icon -> Uwierzytelnianie w celu potwierdzenia instancji bazy danych. Możesz wybrać Uwierzytelnianie systemu Windows lub Uwierzytelnianie SQL.

Dodaj urządzenie

To wszystko, teraz możesz zaplanować tworzenie kopii zapasowych danych dla dodanego serwera SQL.

Jak utworzyć kopię zapasową wielu baz danych w SQL Server:

1. Kliknij Zadanie tworzenia kopii zapasowej -> Utwórz nowe zadanie, a następnie wybierz typ kopii zapasowej jako Kopia zapasowa Microsoft SQL.

Typ kopii zapasowej

2. Kliknij na Nazwa urządzenia, aby określić instancję SQL i bazy danych do kopii zapasowej. Możesz wybrać jedną lub wiele baz danych według potrzeb.

Wybierz bazę danych

3. Wybierz docelowy Magazyn, w którym chcesz zapisać kopie zapasowe SQL. Możesz określić ścieżkę lokalną lub sieciową.

Wybierz cel

4. Skonfiguruj Harmonogram, aby wykonywać codzienne, tygodniowe lub miesięczne kopie zapasowe bazy danych SQL, oraz wybierz metodę Kopiowania pełnego, inkrementalnego lub różnicowego.

Harmonogram kopii zapasowej

Kliknij Rozpocznij kopię zapasową , aby utworzyć i uruchomić zadanie. Po zakończeniu znajdziesz je w zakładce Zadanie kopii zapasowej.

✍Więcej przydatnych funkcji:

  • Wyczyść kopie zapasowe pomaga w automatycznym usuwaniu starszych wersji kopii zapasowych, co pozwala zaoszczędzić miejsce na dysku.
  • Powiadomienia email umożliwiają otrzymywanie powiadomień email, gdy zadanie nie przebiega prawidłowo lub jest zakończone sukcesem.
  • Archiwizacja pomaga archiwizować pliki kopii zapasowych do magazynu AWS S3.

◉ Jak przywrócić wiele baz danych z kopii zapasowej:

1. Kliknij Zadanie kopii zapasowej na pasku menu po lewej stronie, wyszukaj zadanie do przywrócenia i kliknij ikona -> Przywróć.

Przywróć

2. Wybierz wersję kopii zapasowej, z której chcesz przywrócić bazy danych SQL.

Wybierz treść

3. Następnie wybierz lokalizację docelową, do której chcesz przywrócić dane. Istnieją 2 opcje:

  • Przywróć do oryginalnej lokalizacji (domyślnie): przywracanie w miejscu, które pozwala przywrócić bazy danych SQL do starszej wersji.
  • Przywróć do nowej lokalizacji: wybierz inny cel, aby przeprowadzić przywracanie poza miejscem. Możesz określić nazwę nowej bazy danych i zmienić lokalizację przechowywania.

Przywróć do oryginalnej lokalizacji

Nadpisz bazę danych o tej samej nazwie: Jeżeli zaznaczysz tę opcję, skopiowane bazy danych nadpiszą docelowe bazy danych o tych samych nazwach. Jeżeli pozostawisz to odznaczone, bazy danych docelowe o tych samych nazwach zostaną pominięte podczas przywracania.

4. Po ustawieniu wszystkich parametrów, kliknij przycisk Rozpocznij przywracanie, aby rozpocząć proces przywracania i cierpliwie poczekaj aż zostanie zakończony. Możesz kliknąć przycisk Ikona, aby zobaczyć szczegóły przywracania lub je anulować.

Rozpocznij przywracanie

✍Uwagi:

  • "Przywróć do oryginalnego miejsca" musi potwierdzić istnienie oryginalnego miejsca. W przeciwnym przypadku można wybrać tylko "Przywróć do nowego miejsca".
  • "Przywróć do oryginalnego miejsca" nadpisze lub usunie dane oryginalnej bazy danych, jeśli oryginalna baza danych zawiera ważne dane, zaleca się wybranie "Przywróć do nowego miejsca".

Podsumowanie

Interfejs GUI SSMS umożliwia przywracanie tylko jednej bazy danych na raz. Jeśli chcesz przywrócić wiele baz danych w SQL Server naraz, najczęściej stosowanym rozwiązaniem jest użycie skryptu T-SQL. Jednakże, ma on surowe ograniczenia dotyczące nazw plików kopii zapasowych, a operacje takie jak przywracanie baz danych do innego egzemplarza są trudne do wykonania. Dlatego warto spróbować oprogramowania do tworzenia kopii zapasowych SQL - AOMEI Cyber Backup.

Ułatwia to operacje. Na przykład, można automatycznie tworzyć kopie zapasowe baz danych SQL za pomocą kilku prostych kliknięć, a następnie równie łatwo przywrócić wiele baz danych naraz.

Alex
Alex · Editor
Amelia jest redaktorką w AOMEI. Wyszkolona w systemach profesjonalnych, specjalizuje się w rozwiązywaniu problemów w bazach danych przedsiębiorstw, maszynach wirtualnych i środowiskach fizycznych. Z dużym poczuciem odpowiedzialności, poświęca się ochronie danych biznesowych i bezpieczeństwu.