Поделиться через


Создание полной резервной копии базы данных

Область применения:SQL Server

В этой статье описывается создание полной резервной копии базы данных в SQL Server с помощью SQL Server Management Studio, Transact-SQL или PowerShell.

Дополнительные сведения см. в статье о резервном копировании и восстановлении SQL Server с помощью хранилища BLOB-объектов Azure ирезервного копирования SQL Server по URL-адресу для хранилища BLOB-объектов Azure.

Ограничения

  • Инструкция BACKUP не допускается в явных и неявных транзакциях.
  • Резервные копии, созданные более поздними версиями SQL Server, не могут быть восстановлены в более ранних версиях SQL Server.

Общие сведения о концепциях и задачах резервного копирования см. в обзоре резервного копирования (SQL Server), прежде чем продолжить.

Рекомендации

  • По мере увеличения размера базы данных полное резервное копирование занимает больше времени и требует больше дискового пространства. Для больших баз данных может потребоваться, кроме полных резервных копий, создавать также и разностные резервные копии баз данных.
  • Размер полной резервной копии базы данных вы можете вычислить с помощью системной хранимой процедуры sp_spaceused .
  • По умолчанию каждая успешная операция резервного копирования добавляет запись в журнал ошибок SQL Server и в журнал системных событий. При частом резервном копировании сообщения об успешном выполнении операций накапливаются быстро, что приводит к возникновению огромных журналов ошибок, что затрудняет поиск других сообщений. Если работа существующих скриптов не зависит от записей журнала резервного копирования, то их можно отключить с помощью флага трассировки 3226. Дополнительные сведения см. в разделе "Настройка флагов трассировки с помощью DBCC TRACEON".

Безопасность

TRUSTWORTHY имеет значение OFF в резервной копии базы данных. Дополнительные сведения о настройке TRUSTWORTHYONсм. в разделе "ПАРАМЕТРЫ ALTER DATABASE SET".

Начиная с SQL Server 2012 (11.x), PASSWORD параметры и MEDIAPASSWORD параметры недоступны для создания резервных копий. Все еще вы можете восстанавливать резервные копии, созданные с паролями.

Разрешения

Разрешения BACKUP DATABASE и BACKUP LOG по умолчанию назначаются участникам предопределенной роли сервера sysadmin и предопределенным ролям базы данных db_owner и db_backupoperator.

Проблемы, связанные с владельцем и разрешениями у физических файлов на устройстве резервного копирования, могут помешать операции резервного копирования. Служба SQL Server должна считывать и записывать данные на устройство. Учетная запись, в которой выполняется служба SQL Server, должна иметь разрешения на запись на устройство резервного копирования. Однако процедура sp_addumpdevice, добавляющая запись для устройства резервного копирования в системные таблицы, не проверяет разрешения на доступ к файлу. Проблемы в физическом файле устройства резервного копирования могут не отображаться, пока не будет использована резервная копия или попытка восстановления.

Использование СРЕДЫ SQL Server Management Studio

Примечание.

При указании задачи резервного копирования с помощью СРЕДЫ SQL Server Management Studio можно создать соответствующий скрипт Transact-SQL BACKUP , нажав кнопку "Скрипт " и выбрав назначение скрипта.

  1. После подключения к соответствующему экземпляру ядра СУБД SQL Server в обозревателе объектов разверните дерево сервера.

  2. Разверните узел Базы данныхи выберите пользовательскую базу данных или разверните узел Системные базы данных и выберите системную базу данных.

  3. Щелкните правой кнопкой мыши базу данных, которую требуется создать резервную копию, наведите указатель на задачи и выберите "Создать резервную копию...".

  4. В диалоговом окне резервного копирования базы данных выбранная база данных появится в раскрывающемся списке. (Вы можете изменить базу данных на любую другую базу данных на сервере.)

  5. В списке типов резервного копирования выберите тип резервного копирования . Значение по умолчанию — Full.

    Внимание

    Прежде чем выполнять разностную или резервную копию журнала транзакций, необходимо выполнить по крайней мере одну полную резервную копию базы данных.

  6. В разделе Компонент резервного копирования выберите База данных.

  7. В разделе Назначение проверьте расположение по умолчанию для файла резервной копии (в папке ../mssql/data).

    Для выбора другого устройства можно использовать резервную копию . Выберите "Добавить ", чтобы добавить объекты резервного копирования и (или) назначения. Резервный набор данных можно перераспределить между несколькими файлами, чтобы повысить скорость резервного копирования.

    Чтобы удалить место назначения резервной копии, выберите его и нажмите кнопку "Удалить". Чтобы просмотреть содержимое существующего назначения резервной копии, выберите его и выберите "Содержимое".

  8. (Необязательно) Просмотрите другие доступные параметры на страницах параметров мультимедиа и параметров резервного копирования .

    Дополнительные сведения о различных вариантах резервного копирования см. на странице "Резервное копирование базы данных" (страница "Общие") и резервной копии базы данных (страница "Параметры резервного копирования") и резервной копии базы данных (страница "Параметры резервного копирования").

  9. Чтобы начать резервное копирование, нажмите кнопку OK.

  10. После успешного завершения резервного копирования нажмите кнопку "ОК ", чтобы закрыть диалоговое окно SQL Server Management Studio.

Дополнительная информация:

  • После создания полной резервной копии базы данных можно создавать разностные резервные копии или резервные копии журналов транзакций.

  • (Необязательно) Установите флажок резервного копирования только для копирования , чтобы создать резервную копию только для копирования. Резервная копия только для копирования — это резервная копия SQL Server, которая не зависит от последовательности обычных резервных копий SQL Server. Дополнительные сведения см. в статье о резервных копиях только для копирования. Резервная копия только для копирования недоступна для типа резервной копии Разностная.

  • При резервном копировании на URL-адрес параметр Перезаписать носитель на странице Параметры носителя недоступен.

Примеры

Для следующих примеров создайте тестовую базу данных со следующим кодом 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

А. Полное резервное копирование на диск в расположение по умолчанию

В этом примере SQLTestDB база данных выполняет резервное копирование на диск в расположении резервного копирования по умолчанию.

  1. После подключения к соответствующему экземпляру ядра СУБД SQL Server в обозревателе объектов разверните дерево сервера.

  2. Разверните элемент Базы данных, щелкните SQLTestDB правой кнопкой мыши, наведите указатель на пункт Задачи и выберите действие Создать резервную копию....

  3. Нажмите ОК.

  4. После успешного завершения резервного копирования нажмите кнопку "ОК ", чтобы закрыть диалоговое окно SQL Server Management Studio.

Снимок экрана: шаги по созданию резервной копии.

В. Полное резервное копирование на диск в недефакторное расположение

В этом примере SQLTestDB база данных выполняет резервное копирование на диск в выбранном расположении.

  1. После подключения к соответствующему экземпляру ядра СУБД SQL Server в обозревателе объектов разверните дерево сервера.

  2. Разверните элемент Базы данных, щелкните SQLTestDB правой кнопкой мыши, наведите указатель на пункт Задачи и выберите действие Создать резервную копию....

  3. На странице "Общие" в разделе "Назначение" выберите "Диск" в списке "Резервная копия".

  4. Выберите "Удалить", пока не будут удалены все существующие файлы резервной копии.

  5. Нажмите кнопку "Добавить". Откроется диалоговое окно выбора назначения резервного копирования .

  6. Введите допустимый путь и имя файла в поле "Имя файла ". Используйте .bak в качестве расширения, чтобы упростить классификацию файла.

  7. Щелкните ОК, а затем еще раз щелкните ОК, чтобы начать резервное копирование.

  8. После успешного завершения резервного копирования нажмите кнопку "ОК ", чтобы закрыть диалоговое окно SQL Server Management Studio.

Снимок экрана, на котором показано, как добавить или удалить расположение резервного копирования.

В. Создание зашифрованной резервной копии

В этом примере SQLTestDB база данных выполняет резервное копирование с шифрованием в расположение резервного копирования по умолчанию.

  1. После подключения к соответствующему экземпляру ядра СУБД SQL Server в обозревателе объектов разверните дерево сервера.

  2. Разверните базы данных, разверните системные базы данных, щелкните правой кнопкой мыши masterи выберите команду "Создать запрос ", чтобы открыть окно запроса с подключением к SQLTestDB базе данных.

  3. Выполните следующие команды, чтобы создать главный ключ базы данных и сертификат в master базе данных.

    -- 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';
    
  4. В обозревателе объектов в узле Базы данных щелкните правой кнопкой мыши базу данных SQLTestDB, наведите указатель на пункт Задачи и выберите действие Создать резервную копию....

  5. На странице "Параметры носителя " в разделе "Перезапись мультимедиа " выберите "Резервное копирование" в новый набор носителей и удалите все существующие резервные копии.

  6. На странице "Параметры резервного копирования" в разделе "Шифрование " выберите "Шифрование резервного копирования".

  7. В списке алгоритмов выберите AES 256.

  8. В списке ключей сертификата или асимметричного ключа выберите MyCertificate.

  9. Нажмите ОК.

Снимок экрана: шаги по созданию зашифрованной резервной копии.

Д. Резервное копирование в хранилище объектов BLOB Azure

В этом примере создается полная резервная копия SQLTestDB базы данных в хранилище BLOB-объектов Azure. В этом примере предполагается, что у вас уже есть учетная запись хранения с контейнером BLOB-объектов. В этом примере создается подписанный URL-адрес. Пример завершается ошибкой, если контейнер имеет существующую подписанный URL-адрес.

Если у вас нет контейнера хранилища BLOB-объектов в учетной записи хранения, создайте его перед продолжением. Дополнительные сведения см. в статье Создание учетной записи хранения и разделе Создание контейнера.

  1. После подключения к соответствующему экземпляру ядра СУБД SQL Server в обозревателе объектов разверните дерево сервера.

  2. Разверните элемент Базы данных, щелкните SQLTestDB правой кнопкой мыши, наведите указатель на пункт Задачи и выберите действие Создать резервную копию....

  3. На странице "Общие" в разделе "Назначение" выберите URL-адрес в списке "Резервная копия".

  4. Нажмите кнопку "Добавить". Откроется диалоговое окно выбора назначения резервного копирования .

  5. Если вы ранее зарегистрировали контейнер хранилища Azure, который вы хотите использовать с SQL Server Management Studio, выберите его. В противном случае щелкните Создать контейнер, чтобы зарегистрировать новый контейнер.

  6. В диалоговом окне "Подключение к подписке Майкрософт" войдите в свою учетную запись.

  7. В поле "Выбор учетной записи хранения" выберите учетную запись хранения.

  8. В поле "Выбор контейнера BLOB-объектов " выберите контейнер BLOB-объектов.

  9. В поле календаря срока действия политики общего доступа выберите дату окончания срока действия политики общего доступа, которую вы создали в этом примере.

  10. Выберите Создать учетные данные, чтобы сгенерировать разделяемую подпись доступа и учетные данные в SQL Server Management Studio.

  11. Нажмите кнопку "ОК" закрыть диалоговое окно "Подключение к подписке Майкрософт".

  12. В поле "Файл резервного копирования" измените имя файла резервной копии, если вы хотите.

  13. Нажмите кнопку "ОК ", чтобы закрыть диалоговое окно "Выбор назначения резервного копирования ".

  14. Чтобы начать резервное копирование, нажмите кнопку OK.

  15. После успешного завершения резервного копирования нажмите кнопку "ОК ", чтобы закрыть диалоговое окно SQL Server Management Studio.

Примечание.

Резервное копирование в хранилище BLOB-объектов с помощью управляемых удостоверений в настоящее время не поддерживается.

Использование Transact-SQL

Создайте полную резервную копию базы данных, выполнив инструкцию BACKUP DATABASE , указав:

  • имя базы данных для создания резервной копии;
  • устройство резервного копирования, на которое записывается полная резервная копия базы данных.

Базовый синтаксис Transact-SQL для полной резервной копии базы данных:

BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
Вариант Описание
<database> Резервная копия базы данных.
<backup_device> [ , ...n ] Указывает список между 1 и 64 устройствами резервного копирования, используемыми для операции резервного копирования. Можно указать физическое устройство резервного копирования или указать соответствующее логическое устройство резервного копирования, если оно уже определено. Чтобы указать физическое устройство резервного копирования, используйте DISK или TAPE параметр:

{ DISK | TAPE } =physical_backup_device_name

Дополнительные сведения см. в разделе Устройства резервного копирования (SQL Server).
WITH <with_options> [ , ...o ] Используется для указания одного или нескольких параметров, o. Ниже приведены сведения о некоторых основных WITH вариантах.

При необходимости укажите один или несколько WITH параметров. Здесь описаны несколько основных WITH вариантов. Сведения обо всех параметрах WITH см. в статье BACKUP.

Базовые параметры резервного набора WITH данных:

  • { СЖАТИЕ | NO_COMPRESSION }. Только в SQL Server 2008 (10.0.x) Enterprise и более поздних версий указывает, выполняется ли сжатие резервных копий для резервной копии, переопределяя значение по умолчанию на уровне сервера.
  • ШИФРОВАНИЕ (АЛГОРИТМ, СЕРТИФИКАТ СЕРВЕРА | АСИММЕТРИЧНЫЙ КЛЮЧ). Только в SQL Server 2014 или более поздней версии указывает используемый алгоритм шифрования, а также сертификат или асимметричный ключ для защиты шифрования.
  • DESCRIPTION = { "text" | @text_variable }. Указывает текст свободной формы, описывающий резервный набор данных. В этой строке может содержаться до 255 символов.
  • NAME = { backup_set_name | @backup_set_name_var }. Указывает имя резервного набора данных. Длина имени не может превышать 128 символов. Если NAME он не указан, он пустой.

По умолчанию команда BACKUP добавляет резервную копию в существующий набор носителей, сохраняя существующие резервные наборы данных. Чтобы явно указать эту конфигурацию, используйте NOINIT этот параметр. Сведения о добавлении к существующим резервным наборам см. в разделе "Наборы носителей", семейства носителей и резервные наборы резервных копий (SQL Server).

Чтобы отформатировать носитель резервного копирования, используйте FORMAT этот параметр:

FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]

FORMAT Используйте предложение при первом использовании носителя или при перезаписи всех существующих данных. При желании назначьте новому мультимедийному объекту имя и описание.

Внимание

Будьте осторожны при использовании FORMAT предложения инструкции BACKUP , так как этот параметр уничтожает все резервные копии, ранее хранящиеся на носителе резервного копирования.

Примеры

Для следующих примеров создайте тестовую базу данных со следующим кодом 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

А. Резервное копирование на дисковое устройство

В следующем примере выполняется резервное копирование полной SQLTestDB базы данных на диск. Он используется FORMAT для создания нового набора носителей.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
   WITH FORMAT,
      MEDIANAME = 'SQLServerBackups',
      NAME = 'Full Backup of SQLTestDB';
GO

В. Резервное копирование на ленточное устройство

В следующем примере выполняется резервное копирование полной SQLTestDB базы данных на ленту. Он добавляет резервную копию к предыдущим резервным копиям.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO TAPE = '\\.\Tape0'
   WITH NOINIT,
      NAME = 'Full Backup of SQLTestDB';
GO

В. Резервное копирование на логическое ленточное устройство

В следующем примере создается логическое устройство резервного копирования для ленточного накопителя. Затем в этом примере выполняется резервное копирование полной SQLTestDB базы данных на это устройство.

-- 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

С помощью PowerShell

Backup-SqlDatabase Используйте командлет. Чтобы явно указать полную резервную копию базы данных, укажите -BackupAction параметр со значением Databaseпо умолчанию. Данный параметр является необязательным для полных резервных копий баз данных.

Примечание.

Для этих примеров требуется модуль SqlServer. Чтобы определить, установлен ли он, выполните команду Get-Module -Name SqlServer. Чтобы установить его, запустите Install-Module -Name SqlServer сеанс администратора PowerShell.

Дополнительные сведения см. в статье SQL Server PowerShell Provider.

Внимание

Если вы открываете окно PowerShell из СРЕДЫ SQL Server Management Studio (SSMS) для подключения к экземпляру SQL Server, можно опустить часть учетных данных, так как учетные данные в SSMS автоматически используются для установления соединения между PowerShell и экземпляром SQL Server.

Примеры

А. Полная резервная копия (локальная)

В следующем примере создается полная резервная копия базы данных <myDatabase> в заданном по умолчанию расположении резервного копирования на экземпляре сервера Computer\Instance. При необходимости в этом примере указывается -BackupAction Database.

Полные примеры синтаксиса см. в статье Backup-SqlDatabase.

$credential = Get-Credential

Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential

В. Полная резервная копия в Azure

В следующем примере создается полная резервная копия базы данных <myDatabase> на экземпляре <myServer> в хранилище BLOB-объектов. Хранимая политика доступа была создана с правами на чтение, запись и составление списков. Учетные данные https://<myStorageAccount>.blob.core.windows.net/<myContainer>SQL Server были созданы с помощью подписанного URL-адреса, связанного с хранимой политикой доступа. Команда использует $backupFile параметр для указания расположения (URL-адреса) и имени файла резервной копии.

$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