Udostępnij za pośrednictwem


Tworzenie pełnej kopii zapasowej bazy danych

Dotyczy:programu SQL Server

W tym artykule opisano sposób tworzenia pełnej kopii zapasowej bazy danych w programie SQL Server przy użyciu programu SQL Server Management Studio, języka Transact-SQL lub programu PowerShell.

Aby uzyskać więcej informacji, zobacz tworzenie kopii zapasowej i przywracanie programu SQL Server za pomocą usługi Azure Blob Storage i tworzenie kopii zapasowej programu SQL Server pod adresem URL.

Ograniczenia i ograniczenia

  • Instrukcja BACKUP nie jest dozwolona w ramach jawnej lub niejawnej transakcji.
  • Nie można przywrócić kopii zapasowych utworzonych przez najnowszą wersję programu SQL Server we wcześniejszych wersjach programu SQL Server.

Aby uzyskać przegląd i zgłębić pojęcia oraz zadania związane z tworzeniem kopii zapasowych, zapoznaj się z Backup Overview (SQL Server) przed kontynuowaniem.

Zalecenia

  • W miarę zwiększania rozmiaru bazy danych tworzenie pełnych kopii zapasowych bazy danych zajmuje więcej czasu i wymaga więcej miejsca do magazynowania. W przypadku dużych baz danych rozważ uzupełnienie pełnych kopii zapasowych serią różnicowych kopii zapasowych baz danych.
  • Oszacuj rozmiar pełnej kopii zapasowej bazy danych, używając systemowej procedury składowanej sp_spaceused.
  • Domyślnie każda pomyślna operacja tworzenia kopii zapasowej dodaje wpis w dzienniku błędów programu SQL Server i w dzienniku zdarzeń systemu. W przypadku częstego tworzenia kopii zapasowej komunikaty o powodzeniu będą szybko gromadzić się, co powoduje ogromne dzienniki błędów, co utrudnia znalezienie innych komunikatów. W takich przypadkach można pominąć te wpisy dziennika kopii zapasowej przy użyciu flagi śledzenia 3226, jeśli żaden ze skryptów nie zależy od tych wpisów. Aby uzyskać więcej informacji, zobacz Trace Flags (Transact-SQL).

Bezpieczeństwo

TRUSTWORTHY jest ustawione na WYŁĄCZONE w kopii zapasowej bazy danych. Aby uzyskać informacje na temat ustawiania TRUSTWORTHY na ON, zobacz ALTER DATABASE SET Options (Transact-SQL).

Począwszy od programu SQL Server 2012 (11.x), opcje PASSWORD i MEDIAPASSWORD nie są już dostępne przy tworzeniu kopii zapasowych. Nadal można przywrócić kopie zapasowe utworzone przy użyciu haseł.

Uprawnienia

Uprawnienia BACKUP DATABASE i BACKUP LOG są domyślnie przyznawane członkom stałej roli serwera sysadmin oraz stałych ról bazy danych db_owner i db_backupoperator.

Problemy z własnością i uprawnieniami w pliku fizycznym urządzenia kopii zapasowej mogą zakłócać operację tworzenia kopii zapasowej. Usługa SQL Server powinna odczytywać i zapisywać dane na urządzeniu. Konto, na którym działa usługa SQL Server, musi mieć uprawnienia do zapisu na urządzeniu kopii zapasowej. Jednak sp_addumpdevice, który dodaje wpis dla urządzenia kopii zapasowej w tabelach systemowych, nie sprawdza uprawnień dostępu do plików. Problemy z fizycznym plikiem urządzenia do tworzenia kopii zapasowych mogą się ujawnić dopiero w momencie użycia tej kopii lub podczas przywracania danych.

Korzystanie z programu SQL Server Management Studio

Notatka

Po określeniu zadania tworzenia kopii zapasowej przy użyciu programu SQL Server Management Studio można wygenerować odpowiedni skrypt Transact-SQL BACKUP, klikając przycisk skryptu i wybierając miejsce docelowe skryptu.

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem aparatu bazy danych programu Microsoft SQL Server, w eksploratorze obiektów rozwiń drzewo serwerów.

  2. Rozwiń węzeł Bazy danych, a następnie wybierz bazę danych użytkownika lub rozwiń Systemowe bazy danych i wybierz systemową bazę danych.

  3. Kliknij prawym przyciskiem myszy bazę danych, której kopię zapasową chcesz utworzyć, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....

  4. W oknie dialogowym Tworzenie kopii zapasowej bazy danych wybrana baza danych jest wyświetlana na liście rozwijanej (którą można zmienić na dowolną inną bazę danych na serwerze).

  5. Na liście rozwijanej Typ kopii zapasowej wybierz typ kopii zapasowej — wartość domyślna to Full.

    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.

  6. W sekcji Składnik kopii zapasowejwybierz pozycję Baza danych.

  7. W sekcji Destination przejrzyj domyślną lokalizację pliku kopii zapasowej (w pliku .). /mssql/data folder).

    Możesz użyć listy rozwijanej Utwórz kopię zapasową, aby wybrać inne urządzenie. Wybierz pozycję Dodaj, aby dodać obiekty kopii zapasowej i miejsca docelowe. Zestaw kopii zapasowych można rozłożyć na wiele plików, aby zwiększyć szybkość tworzenia kopii zapasowych.

    Aby usunąć miejsce docelowe kopii zapasowej, wybierz je i wybierz pozycję Usuń. Aby wyświetlić zawartość istniejącego miejsca docelowego kopii zapasowej, wybierz ją i wybierz pozycję Zawartość.

  8. (opcjonalnie) Przejrzyj inne dostępne ustawienia na stronach Media Options oraz Backup Options.

    Aby uzyskać więcej informacji na temat różnych opcji tworzenia kopii zapasowych, zobacz stronę ogólną , stronę opcji mediów oraz stronę opcji kopii zapasowych .

  9. Wybierz pozycję OK, aby uruchomić kopię zapasową.

  10. Po pomyślnym zakończeniu tworzenia kopii zapasowej wybierz pozycję OK, aby zamknąć okno dialogowe SQL Server Management Studio.

Dodatkowe informacje

  • Po utworzeniu pełnej kopii zapasowej bazy danych można utworzyć różnicową kopię zapasową bazy danych lub kopii zapasowej dziennika transakcji.

  • (opcjonalnie) Możesz zaznaczyć pole wyboru kopii zapasowej tylko do kopiowania, aby utworzyć kopię zapasową tylko do kopiowania. kopii zapasowej typu copy-only 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 Copy-Only Backups (SQL Server). Kopia zapasowa tylko do kopiowania nie jest dostępna dla różnicowego typu kopii zapasowej.

  • Opcja zastępowania multimediów jest wyłączona na stronie Media Options, jeśli tworzysz kopię zapasową na adresie URL.

Przykłady

W poniższych przykładach utwórz testową bazę danych z następującym kodem 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 NOT NULL DEFAULT getdate()
   );
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

A. Pełna kopia zapasowa dysku do lokalizacji domyślnej

W tym przykładzie kopia zapasowa bazy danych SQLTestDB zostanie utworzona na dysku w domyślnej lokalizacji kopii zapasowej.

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem aparatu bazy danych programu Microsoft SQL Server w eksploratorze obiektów rozwiń drzewo serwerów.

  2. Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....

  3. Wybierz pozycję OK.

  4. Po pomyślnym zakończeniu tworzenia kopii zapasowej wybierz pozycję OK, aby zamknąć okno dialogowe SQL Server Management Studio.

wykonywanie kopii zapasowej SQL

B. Pełna kopia zapasowa dysku do lokalizacji innej niż domyślna

W tym przykładzie kopia zapasowa bazy danych SQLTestDB zostanie utworzona na dysku w wybranej lokalizacji.

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem SQL Servera, w „Eksploratorze obiektów” rozwiń drzewo serwerów .

  2. Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy SQLTestDB, wskaż polecenie Tasks, a następnie wybierz pozycję Utwórz kopię zapasową....

  3. Na stronie Ogólne w sekcji Destination wybierz pozycję Disk z listy rozwijanej Kopia zapasowa do:.

  4. Wybierz pozycję Usuń do momentu usunięcia wszystkich istniejących plików kopii zapasowej.

  5. Wybierz pozycję Dodaj, a otworzy się okno dialogowe Wybierz lokalizację docelową kopii zapasowej.

  6. Wprowadź prawidłową ścieżkę i nazwę pliku w polu tekstowym Nazwa pliku i użyj .bak jako rozszerzenia, aby uprościć klasyfikację tego pliku.

  7. Wybierz pozycję OK, a następnie ponownie wybierz pozycję OK, aby uruchomić kopię zapasową.

  8. Po pomyślnym zakończeniu tworzenia kopii zapasowej wybierz pozycję OK, aby zamknąć okno dialogowe SQL Server Management Studio.

zmień lokalizację bazy danych

C. Tworzenie zaszyfrowanej kopii zapasowej

W tym przykładzie kopia zapasowa bazy danych SQLTestDB zostanie utworzona przy użyciu szyfrowania do domyślnej lokalizacji kopii zapasowej.

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem aparatu bazy danych programu Microsoft SQL Server w eksploratorze obiektów rozwiń drzewo serwerów.

  2. Rozwiń Databases, następnie rozwiń System Databases, kliknij prawym przyciskiem myszy masteri wybierz New Query, aby otworzyć okno zapytania połączone z bazą danych SQLTestDB.

  3. Wykonaj następujące polecenia, aby utworzyć klucz główny bazy danych oraz certyfikat w bazie danych master.

    -- Create the master key
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';  
    
    -- 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 = '23987hxJ#KL95234nl0zBe'
    
    -- Create the certificate encrypted by the master key
    CREATE CERTIFICATE MyCertificate
    WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';  
    
  4. 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ą....

  5. Na stronie Opcje multimediów, w sekcji Zastąp nośniki wybierz Wykonaj kopię zapasową w nowym zestawie multimediów i wymaż wszystkie istniejące zestawy kopii zapasowych.

  6. Na stronie Opcje kopii zapasowej w sekcji Szyfrowanie zaznacz pole wyboru Szyfruj kopię zapasową.

  7. Z listy rozwijanej Algorytm wybierz pozycję AES 256.

  8. Z listy rozwijanej certyfikatu lub klucza asymetrycznego wybierz pozycję MyCertificate.

  9. Wybierz pozycję OK.

Zaszyfrowana kopia zapasowa

D. Tworzenie kopii zapasowej do Azure Blob Storage

W tym przykładzie tworzona jest pełna kopia zapasowa bazy danych SQLTestDB w usłudze Azure Blob Storage. W tym przykładzie założono, że masz już konto magazynowe z kontenerem blob. Przykład tworzy dla Ciebie sygnaturę dostępu współdzielonego; przykład nie powiedzie się, jeśli kontener ma już istniejącą sygnaturę dostępu współdzielonego.

Jeśli nie masz kontenera usługi Azure Blob Storage w koncie magazynowym, utwórz go przed kontynuowaniem. Zobacz Tworzenie konta magazynu ogólnego przeznaczenia i Tworzenie kontenera.

  1. Po nawiązaniu połączenia z odpowiednim wystąpieniem aparatu bazy danych programu Microsoft SQL Server w eksploratorze obiektów rozwiń drzewo serwerów.

  2. Rozwiń Bazy danych, kliknij prawym przyciskiem myszy SQLTestDB, wskaż Zadania, a następnie wybierz Utwórz kopię zapasową....

  3. Na stronie Ogólne w sekcji docelowej wybierz adres URL z listy rozwijanej Tworzenie kopii zapasowej do:.

  4. Wybierz Dodaj, a otworzy się okno dialogowe Wybierz lokalizację docelową kopii zapasowej.

  5. Jeśli wcześniej zarejestrowano kontener usługi Azure Storage, którego chcesz używać z programem SQL Server Management Studio, wybierz go. W przeciwnym razie wybierz pozycję Nowy kontener, aby zarejestrować nowy kontener.

  6. W oknie dialogowym Połącz z subskrypcją firmy Microsoft zaloguj się na swoje konto.

  7. W rozwijanym polu tekstowym Wybierz konto magazynu wybierz swoje konto magazynu.

  8. W menu rozwijanym Wybierz kontener obiektów blob wybierz swój kontener obiektów blob.

  9. W polu kalendarza rozwijanego zasady dostępu współdzielonego wybierz datę wygaśnięcia zasad dostępu współdzielonego utworzonych w tym przykładzie.

  10. Wybierz pozycję Utwórz poświadczenie, aby wygenerować wspólną sygnaturę dostępu i poświadczenie w programie SQL Server Management Studio.

  11. Wybierz pozycję OK zamknij okno dialogowe Połącz z subskrypcją firmy Microsoft.

  12. W polu tekstowym pliku kopii zapasowej zmodyfikuj nazwę pliku kopii zapasowej (opcjonalnie).

  13. Wybierz pozycję OK, aby zamknąć okno dialogowe Wybierz miejsce docelowe kopii zapasowej.

  14. Wybierz pozycję OK, aby uruchomić kopię zapasową.

  15. Po pomyślnym zakończeniu tworzenia kopii zapasowej wybierz pozycję OK, aby zamknąć okno dialogowe SQL Server Management Studio.

Notatka

Tworzenie kopii zapasowej w usłudze Azure Blob Storage nie jest obecnie obsługiwane przy użyciu tożsamości zarządzanych.

Korzystanie z Transact-SQL

Utwórz pełną kopię zapasową bazy danych, wykonując instrukcję BACKUP DATABASE w celu utworzenia pełnej kopii zapasowej bazy danych, określając:

  • 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
bazy danych Baza danych, która ma zostać zarchiwizowana.
backup_device [ ,...n ] Określa listę z 1 do 64 urządzeń kopii zapasowych do użycia na potrzeby operacji tworzenia kopii zapasowej. Możesz określić fizyczne urządzenie do tworzenia kopii zapasowej lub określić odpowiednie logiczne urządzenie kopii zapasowej, jeśli zostało już zdefiniowane. Aby określić fizyczne urządzenie kopii zapasowej, użyj opcji DISK lub TAPE:

{ DYSK | TAŚMA } =physical_backup_device_name

Aby uzyskać więcej informacji, zobacz Backup Devices (SQL Server).
WITH with_options [ ,...o ] Służy do określania jednej lub więcej opcji o. Aby uzyskać informacje o niektórych podstawowych opcjach, zobacz krok 2.

Opcjonalnie określ jedną lub więcej z opcjami. Poniżej opisano kilka podstawowych opcji z. Aby uzyskać informacje o wszystkich opcjach WITH, zobacz BACKUP (Transact-SQL).

Podstawowy zestaw kopii zapasowych z opcjami:

  • { KOMPRESJA | NO_COMPRESSION }: W programie SQL Server 2008 (10.0.x) Enterprise i nowszym określa, czy kompresja kopii zapasowej jest wykonywana dla tej kopii zapasowej, zastępując domyślną wartość serwera.
  • szyfrowanie (ALGORYTM, CERTYFIKAT SERWERA | KLUCZ ASYMETRYCZNY): W programie SQL Server 2014 lub nowszym, określ algorytm szyfrowania oraz Certyfikat lub klucz asymetryczny do zabezpieczenia szyfrowania.
  • DESCRIPTION= { "tekst" | @text_variable }: określa tekst dowolny, który opisuje zestaw kopii zapasowych. Ciąg może mieć maksymalnie 255 znaków.
  • NAME = { backup_set_name | @backup_set_name_var }: Określa nazwę zestawu kopii zapasowych. Nazwy mogą mieć maksymalnie 128 znaków. Jeśli nazwa nie jest określona, jest ona pusta.

Domyślnie BACKUP dołącza kopię zapasową do istniejącego zestawu multimediów, zachowując istniejące zestawy kopii zapasowych. Aby jawnie określić, użyj opcji NOINIT. Aby uzyskać informacje na temat dołączania do istniejących zestawów kopii zapasowych, zobacz zestawy nośników, rodziny nośników i zestawy kopii zapasowych (SQL Server).

Aby sformatować nośnik kopii zapasowej, użyj opcji FORMAT:

FORMAT [ , NAZWA_MEDIÓW = { media_name | @media_name_variable } ] [ , OPIS_MEDIÓW = { tekst | @text_variable } ]

Użyj klauzuli FORMAT, gdy korzystasz z nośnika po raz pierwszy lub gdy chcesz zastąpić wszystkie istniejące dane. Opcjonalnie przypisz nowemu nośnikowi nazwę i opis.

Ważny

Należy zachować szczególną ostrożność w przypadku używania klauzuli format instrukcji BACKUP, ponieważ powoduje to zniszczenie wszelkich kopii zapasowych, które były wcześniej przechowywane na nośniku kopii zapasowych.

Przykłady

W poniższych przykładach utwórz testową bazę danych z następującym kodem 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 NOT NULL DEFAULT GETDATE()
)
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

A. Wykonaj kopię zapasową na urządzeniu dyskowym

Poniższy przykład tworzy kopię zapasową kompletnej bazy danych SQLTestDB na dysku przy użyciu FORMAT w celu utworzenia nowego zestawu multimediów.

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ą kompletnej bazy danych SQLTestDB na taśmie, dołączając 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ą kompletnej bazy danych SQLTestDB na tym urządzeniu.

-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC 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

Korzystanie z programu PowerShell

Użyj polecenia cmdlet Backup-SqlDatabase. Aby jawnie wskazać pełną kopię zapasową bazy danych, określ parametr -BackupAction z wartością domyślną Database. Ten parametr jest opcjonalny dla pełnych kopii zapasowych bazy danych.

Notatka

Te przykłady wymagają modułu SqlServer. Aby określić, czy jest zainstalowany, uruchom polecenie Get-Module -Name SqlServer. Aby zainstalować, uruchom Install-Module -Name SqlServer w sesji administratora programu PowerShell.

Aby uzyskać więcej informacji, zobacz Dostawca PowerShell SQL Server.

Ważny

Jeśli otwierasz okno programu PowerShell z poziomu programu SQL Server Management Studio w celu nawiązania połączenia z instalacją programu SQL Server, możesz pominąć część poświadczeń, ponieważ poświadczenia w programie SSMS są automatycznie używane do nawiązywania połączenia między programem PowerShell i wystąpieniem programu SQL Server.

Przykłady

A. 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 w tym przykładzie określono -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 <myServer> w usłudze Azure Blob Storage. Zasady dostępu przechowywanego zostały utworzone z uprawnieniami do odczytu, zapisu i listy. Poświadczenie programu SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, zostało utworzone przy użyciu sygnatury dostępu współdzielonego skojarzonej z zapisanymi zasadami dostępu. Polecenie programu PowerShell 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