Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Ten artykuł opisuje, jak stworzyć pełną kopię zapasową bazy danych w SQL Server, korzystając z SQL Server Management Studio (SSMS), Transact-SQL lub PowerShell.
Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej i przywracanie programu SQL Server przy użyciu usługi Azure Blob Storage i kopii zapasowej programu SQL Server pod adresem URL usługi Azure Blob Storage. Aby uzyskać przegląd koncepcji i zadań tworzenia kopii zapasowych, zobacz przegląd kopii zapasowych (SQL Server).
Zalecenia
Wraz z rozwojem bazy danych, pełne kopie zapasowe zajmują więcej czasu i wymagają więcej miejsca na przechowywanie. W przypadku dużych baz danych uzupełniaj pełne kopie zapasowe serią różnicowych kopii zapasowych baz danych.
Oszacuj rozmiar pełnej kopii zapasowej bazy danych za pomocą systemowej procedury składowanej sp_spaceused.
Domyślnie każda udana kopia zapasowa dodaje wpis do logu błędów SQL Server oraz do dziennika zdarzeń systemowych. Częste kopie zapasowe mogą zapełnić te logi i utrudnić znalezienie innych wiadomości.
Aby ograniczyć wpisy w logach backupowych, użyj flagi trace 3226, pod warunkiem, że twoje skrypty na nich nie polegają.
Ograniczenia
Nie możesz użyć BACKUP tego stwierdzenia w transakcji jawnej ani domyślnej.
Nie da się przywrócić kopii zapasowych z nowszych wersji SQL Server w starszych wersjach. Na przykład nie można przywrócić kopii zapasowej SQL Server 2025 (17.x) w SQL Server 2022 (16.x).
Zabezpieczenia
TRUSTWORTHY jest ustawiony na OFF w kopii zapasowej bazy danych. Aby ustawić TRUSTWORTHY na ON, zobacz opcje ALTER DATABASE SET.
Począwszy od programu SQL Server 2012 (11.x) opcje PASSWORD i MEDIAPASSWORD nie są dostępne podczas tworzenia kopii zapasowych. Nadal można przywrócić kopie zapasowe utworzone przy użyciu haseł.
Uprawnienia
BACKUP DATABASE a BACKUP LOG uprawnienia domyślnie należą do członków stałej roli serwera administratora systemu , a także do ról db_owner i db_backupoperator stałej bazy danych.
Konto usługi SQL Server musi mieć uprawnienia do odczytu i zapisu w fizycznym pliku urządzenia backup. Problemy z własnością lub uprawnieniami do tego pliku uniemożliwiają operacje tworzenia kopii zapasowej i przywracania i pojawiają się tylko podczas wykonywania operacji backupu lub przywracania.
Na przykład procedura przechowywana w systemie sp_addumpdevice , która dodaje wpis urządzenia kopii zapasowej do tabel systemowych, nie waliduje dostępu do plików.
Korzystanie z programu SQL Server Management Studio
W Eksplorator obiektów połącz się z Database Engine, a następnie rozwiń drzewo serwera.
Rozwiń bazy danych, a następnie wybierz bazę użytkowników. Albo rozwiń System Databases i wybierz bazę danych systemową.
Kliknij prawym przyciskiem myszy na bazę danych, którą chcesz zrobić kopię zapasową, wskaż Zadania, a następnie wybierz Kopię zapasową....
W oknie dialogowym Backup Database wybrana przez Ciebie baza danych pojawia się na liście rozwijanej. Możesz zmienić bazę danych na dowolną inną na serwerze.
Na liście Typ kopii zapasowej wybierz typ kopii zapasowej. Wartość domyślna to Pełna.
Ważny
Przed wykonaniem różnicowej kopii zapasowej lub kopii zapasowej dziennika transakcji należy wykonać co najmniej jedną pełną kopię zapasową bazy danych.
W sekcji Składnik kopii zapasowejwybierz pozycję Baza danych.
W sekcji Destination przejrzyj domyślną lokalizację pliku kopii zapasowej (w pliku .). /mssql/data folder).
Użyj opcji Kopia zapasowa do listy, aby wybrać inne urządzenie. Wybierz Dodaj, aby dodać obiekty kopii zapasowej lub miejsca docelowe. Możesz rozdzielić zestaw kopii zapasowych na wiele plików, aby zwiększyć szybkość tworzenia kopii zapasowych.
Aby usunąć miejsce docelowe kopii zapasowej, wybierz je i wybierz pozycję Usuń. Aby zobaczyć zawartość istniejącego miejsca tworzenia kopii zapasowej, wybierz ją i wybierz Contents.
Opcjonalnie przejrzyj pozostałe ustawienia na stronach Opcje Mediów i Opcje Kopii Zapasowej .
Więcej informacji o opcjach kopii zapasowych można znaleźć w Bazie danych kopii zapasowej (strona ogólna),Baze danych kopii zapasowych (strona opcji multimedialnych) oraz bazie danych kopii zapasowych (strona opcji kopii zapasowej).
Wybierz pozycję OK, aby uruchomić kopię zapasową.
Po pomyślnym zakończeniu kopii zapasowej wybierz OK , aby zamknąć dialog dialogowy.
Remarks
Gdy w SQL Server Management Studio określisz zadanie kopii zapasowej, możesz wygenerować odpowiadający mu skrypt Transact-SQLBACKUP, wybierając przycisk Script, a następnie wybierając miejsce docelowe skryptu.
Po utworzeniu pełnej kopii zapasowej bazy danych możesz utworzyć różnicową kopię bazową danych lub log transakcyjnych.
Opcjonalnie zaznacz pole wyboru Kopia zapasowa tylko do kopiowania, aby utworzyć kopię zapasową tylko do kopiowania. Kopia zapasowa tylko do kopiowania to kopia zapasowa programu SQL Server, która jest niezależna od sekwencji konwencjonalnych kopii zapasowych programu SQL Server. Aby uzyskać więcej informacji, zobacz Kopie zapasowe tylko do kopiowania. Kopie zapasowe tylko do kopiowania nie są dostępne dla typu kopii zapasowej Różnicowa.
Opcja Nadpisz media jest wyłączona na stronie Opcje nośników podczas tworzenia kopii zapasowej pod adresem URL.
Przykłady
W poniższych przykładach stwórz testową bazę danych, używając następującego kodu Transact-SQL:
USE master;
GO
CREATE DATABASE [SQLTestDB];
GO
USE [SQLTestDB];
GO
CREATE TABLE SQLTest
(
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR (100) NOT NULL,
dt1 DATETIME DEFAULT getdate() NOT NULL
);
GO
USE [SQLTestDB];
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3');
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4');
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5');
GO
SELECT *
FROM SQLTest;
GO
Odp. Pełna kopia zapasowa na dysku do lokalizacji domyślnej
Ten przykład wykonuje kopię zapasową bazy danych SQLTestDB na dysk w domyślnej lokalizacji kopii zapasowej.
W Eksplorator obiektów połącz się z Database Engine, a następnie rozwiń drzewo serwera.
Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy
SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....Wybierz pozycję OK.
Po pomyślnym zakończeniu kopii zapasowej wybierz OK , aby zamknąć dialog dialogowy.
B. Pełna kopia zapasowa na dysku w lokalizacji niezdefaultowej
Ten przykład robi kopię zapasową bazy danych SQLTestDB na dysk w wybranym przez Ciebie miejscu.
W Eksplorator obiektów połącz się z Database Engine, a następnie rozwiń drzewo serwera.
Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy
SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....Na stronie Ogólne, w sekcji Miejsce docelowe wybierz opcję Dysk z listy Utwórz kopię zapasową w.
Wybierz pozycję Usuń , dopóki wszystkie istniejące pliki kopii zapasowej nie zostaną usunięte.
Wybierz Dodaj. Otwiera się okno dialogowe Wybierz miejsce docelowe kopii zapasowej .
Wprowadź prawidłową ścieżkę i nazwę pliku w polu Nazwa pliku . Użyj .bak jako rozszerzenia, aby uprościć klasyfikację plików.
Wybierz OK, a potem OK ponownie, aby rozpocząć kopię zapasową.
Po pomyślnym zakończeniu kopii zapasowej wybierz OK , aby zamknąć dialog dialogowy.
C. Tworzenie zaszyfrowanej kopii zapasowej
Ten przykład wykonuje kopię zapasową bazy danych SQLTestDB z włączonym szyfrowaniem w domyślnej lokalizacji kopii zapasowej.
W Eksplorator obiektów połącz się z Database Engine, a następnie rozwiń drzewo serwera.
Rozwiń węzeł Bazy danych, rozwiń węzeł Systemowe bazy danych, kliknij prawym przyciskiem myszy bazę danych
master, a następnie wybierz pozycję Nowe zapytanie, aby otworzyć okno zapytania z połączeniem z bazą danychSQLTestDB.Wykonaj następujące polecenia, aby utworzyć główny klucz bazy danych oraz certyfikat w bazie
masterdanych.-- Create the master key. CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; -- If the master key already exists, open it in the same session that you create the certificate. (See next step.) OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'; -- Create the certificate encrypted by the master key. CREATE CERTIFICATE MyCertificate WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';W eksploratorze obiektów w węźle bazy danych kliknij prawym przyciskiem myszy pozycję
SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Wykonaj kopię zapasową....Na stronie Opcje multimediów w sekcji Zastąp nośnik wybierz pozycję Utwórz kopię zapasową nowego zestawu multimediów i wymazaj wszystkie istniejące zestawy kopii zapasowych.
Na stronie Opcje kopii zapasowej w sekcji Szyfrowanie wybierz pozycję Szyfruj kopię zapasową.
Na liście Algorytm wybierz pozycję AES 256.
Na liście Certyfikat lub Klucz asymetryczny wybierz pozycję
MyCertificate.Wybierz pozycję OK.
D. Tworzenie kopii zapasowej do Azure Blob Storage
W tym przykładzie tworzona jest pełna kopia zapasowa SQLTestDB bazy danych w usłudze Azure Blob Storage. Przykład zakłada, że masz już konto pamięci z kontenerem blob. Przykład tworzy sygnaturę dostępu współdzielonego i kończy się niepowodzeniem, jeśli kontener ma już istniejącą sygnaturę dostępu współdzielonego.
Jeśli nie masz kontenera Blob Storage na koncie storage, utwórz go przed kontynuacją. Zobacz Tworzenie konta magazynu ogólnego przeznaczenia i Tworzenie kontenera.
W Eksplorator obiektów połącz się z Database Engine, a następnie rozwiń drzewo serwera.
Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy
SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....Na stronie Ogólne, w sekcji Miejsce docelowe, wybierz opcję URL z listy Utwórz kopię zapasową w.
Wybierz Dodaj. Otwiera się okno dialogowe Wybierz miejsce docelowe kopii zapasowej .
Jeśli wcześniej zarejestrowałeś kontener Azure, którego chcesz używać w SSMS, wybierz go. W przeciwnym razie wybierz pozycję Nowy kontener, aby zarejestrować nowy kontener.
W oknie dialogowym Połącz z subskrypcją Microsoft zaloguj się na swoje konto.
W polu Wybierz konto magazynu wybierz swoje konto magazynu.
W polu Wybierz kontener obiektów blob wybierz swój kontener obiektów blob.
W kalendarzu wygaśnięcia polityki współdzielonego dostępu wybierz datę wygaśnięcia polityki współdzielonego dostępu, którą tworzy ten przykład.
Wybierz Create Credential , aby wygenerować podpis i dane dostępu współdzielonego w SSMS.
Wybierz OK, aby zamknąć okno dialogowe Connect to a Microsoft Subscription.
W polu Plik kopii zapasowej zmień nazwę pliku kopii zapasowej, jeśli chcesz.
Wybierz OK , aby zamknąć okno dialogowe Wybierz miejsce docelowe kopii zapasowej .
Wybierz pozycję OK, aby uruchomić kopię zapasową.
Po pomyślnym zakończeniu kopii zapasowej wybierz OK , aby zamknąć dialog dialogowy.
Notatka
Tworzenie kopii zapasowej w usłudze Blob Storage przy użyciu tożsamości zarządzanych nie jest obecnie obsługiwane.
Korzystanie z Transact-SQL
Utwórz pełną kopię zapasową bazy danych, uruchamiając instrukcję BACKUP DATABASE. Precyzować:
- Nazwa bazy danych do utworzenia kopii zapasowej.
- Urządzenie kopii zapasowej, na którym jest zapisywana pełna kopia zapasowa bazy danych.
Podstawowa Transact-SQL składnia pełnej kopii zapasowej bazy danych to:
BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
| Opcja | Opis |
|---|---|
<database> |
Baza danych do backupu. |
<backup_device> [ , ...n ] |
Określa od 1 do 64 urządzeń kopii zapasowych do operacji backup. Określ fizyczne urządzenie kopii zapasowej lub odpowiadające mu logiczne urządzenie kopii zapasowej, jeśli jest już zdefiniowane. Aby określić fizyczne urządzenie do kopii zapasowej, użyj DISK, TAPE, lub URL opcji:{ DISK | URL | TAPE} = physical_backup_device_nameUżyj URL, aby tworzyć kopie zapasowe w Azure Blob Storage lub w magazynie obiektów zgodnym z S3. Aby uzyskać więcej informacji, zobacz Backup Devices (SQL Server). |
WITH <with_options> [ , ...n ] |
Używany do określenia jednej lub więcej opcji, n. Niektóre podstawowe WITH opcje opisano na poniższej liście. |
Opcjonalnie określ co najmniej jedną WITH opcję. Poniżej opisano kilka podstawowych WITH opcji. Informacje o wszystkich opcjach WITH można znaleźć w BACKUP.
Podstawowe opcje zestawu WITH kopii zapasowych:
{ KOMPRESJA | BRAK KOMPRESJI }. SQL Server określa, czy kompresja kopii zapasowej jest wykonywana na kopii zapasowej, nadpisując domyślną wersję na poziomie serwera.
SZYFROWANIE (ALGORYTM, SERWER CERTIFICATE | ASYMMETRIC KEY). W SQL Server 2014 lub nowszym określono algorytm szyfrowania do użycia oraz certyfikat lub klucz asymetryczny do zabezpieczenia szyfrowania.
OPIS = { 'tekst' | @text_variable}. Określa tekst swobodny opisujący zestaw kopii zapasowych. Ciąg może mieć maksymalnie 255 znaków.
NAZWA = { backup_set_name | @backup_set_name_var }. Określa nazwę zestawu kopii zapasowych. Nazwy mogą mieć maksymalnie 128 znaków. Jeśli nie określisz
NAME, jest pusty.
Domyślnie BACKUP dołącza kopię zapasową do istniejącego zestawu multimediów, zachowując istniejące zestawy kopii zapasowych. Aby jawnie określić tę konfigurację NOINIT , użyj opcji . Aby uzyskać informacje na temat dołączania do istniejących zestawów kopii zapasowych, zobacz Zestawy multimediów, rodziny multimediów i zestawy kopii zapasowych (SQL Server).
Aby sformatować nośnik kopii zapasowej, użyj FORMAT opcji:
FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]
Używaj FORMAT tej klauzuli, gdy używasz mediów po raz pierwszy lub gdy chcesz nadpisać wszystkie istniejące dane. Opcjonalnie przypisz nowemu nośnikowi nazwę i opis.
Ważny
Bądź ostrożny przy używaniu klauzuli FORMAT tego BACKUP stwierdzenia, ponieważ ta opcja niszczy wszelkie kopie zapasowe wcześniej przechowywane na nośniku zapasowym.
Przykłady
W poniższych przykładach stwórz testową bazę danych, używając następującego kodu Transact-SQL:
USE master;
GO
CREATE DATABASE [SQLTestDB];
GO
USE [SQLTestDB];
GO
CREATE TABLE SQLTest
(
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR (100) NOT NULL,
dt1 DATETIME DEFAULT GETDATE() NOT NULL
);
GO
USE [SQLTestDB];
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3');
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4');
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5');
GO
SELECT *
FROM SQLTest;
GO
Odp. Wykonaj kopię zapasową na urządzeniu dyskowym
Poniższy przykład wykonuje kopię zapasową kompletnej SQLTestDB bazy danych na dysku. Używa FORMAT do utworzenia nowego zestawu multimedialnego.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of SQLTestDB';
GO
B. Wykonaj kopię zapasową na urządzeniu taśmowym
Poniższy przykład wykonuje kopię zapasową pełnej SQLTestDB bazy danych na taśmie. Dołącza kopię zapasową do poprzednich kopii zapasowych.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO TAPE = '\\.\Tape0'
WITH NOINIT,
NAME = 'Full Backup of SQLTestDB';
GO
C. Tworzenie kopii zapasowej na urządzeniu taśmy logicznej
Poniższy przykład tworzy logiczne urządzenie kopii zapasowej dla stacji taśmowej. Następnie przykład wykonuje kopię zapasową pełnej SQLTestDB bazy danych na tym urządzeniu.
-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXECUTE sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0';
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO SQLTestDB_Bak_Tape
WITH FORMAT,
MEDIANAME = 'SQLTestDB_Bak_Tape',
MEDIADESCRIPTION = '\\.\tape0',
NAME = 'Full Backup of SQLTestDB';
GO
PowerShell
Użyj polecenia Backup-SqlDatabase cmdlet. Aby jawnie wskazać pełną kopię zapasową bazy danych, określ -BackupAction parametr z wartością domyślną . Database Ten parametr jest opcjonalny dla pełnych kopii zapasowych bazy danych.
Jeśli otworzysz okno PowerShell z SSMS, aby połączyć się z SQL Server Database Engine, możesz pominąć część dotyczącą poświadczeń, ponieważ Twoje dane uwierzytelniające automatycznie nawiązują połączenie między PowerShell a Database Engine.
Notatka
Ten przykład wymaga modułu SqlServer . Aby uzyskać więcej informacji, zobacz Dostawca PowerShell SQL Server.
Przykłady
Odp. Pełna kopia zapasowa (lokalna)
Poniższy przykład tworzy pełną kopię zapasową bazy danych <myDatabase> w domyślnej lokalizacji kopii zapasowej instancji serwera Computer\Instance. Opcjonalnie ten przykład określa wartość -BackupAction Database.
Aby zapoznać się z pełnymi przykładami składni, zobacz Backup-SqlDatabase.
$credential = Get-Credential
Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential
B. Pełna kopia zapasowa na platformie Azure
Poniższy przykład tworzy pełną kopię zapasową bazy danych <myDatabase> w wystąpieniu do <myServer> usługi Blob Storage. Tworzona jest polityka przechowywania dostępu z prawami do odczytu, zapisu i listowania. Dane uwierzytelniające SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, są tworzone za pomocą podpisu współdzielonego dostępu powiązanego z polityką przechowywanego dostępu. Polecenie używa parametru $backupFile , aby określić lokalizację (adres URL) i nazwę pliku kopii zapasowej.
$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName
Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential
Powiązane zadania
- Tworzenie różnicowej kopii zapasowej bazy danych (SQL Server)
- Przywracanie kopii zapasowej bazy danych przy użyciu programu SSMS
- Przywróć kopię zapasową bazy danych w modelu prostego odzyskiwania
- Przywracanie bazy danych do punktu awarii — pełne odzyskiwanie
- Przywracanie bazy danych do nowej lokalizacji (SQL Server)
- Użyj Kreatora planu konserwacji
Powiązana zawartość
- Rozwiązywanie problemów z operacjami tworzenia kopii zapasowych i przywracania programu SQL Server
- Omówienie kopii zapasowej (SQL Server)
- Kopie zapasowe dziennika transakcji (SQL Server)
- Zestawy multimediów, rodziny multimediów i zestawy kopii zapasowych (SQL Server)
- sys.sp_addumpdevice (Transact-SQL)
- BACKUP (Transact-SQL)
- tworzenie kopii zapasowej bazy danych (strona ogólna)
- Tworzenie kopii zapasowej bazy danych (Strona opcji kopii zapasowej)
- Różnicowe kopie zapasowe (SQL Server)
- Pełne kopie zapasowe bazy danych (SQL Server)