Как сделать резервную копию баз данных SQL для сетевого ресурса

Оглавление:

Как сделать резервную копию баз данных SQL для сетевого ресурса
Как сделать резервную копию баз данных SQL для сетевого ресурса

Видео: Как сделать резервную копию баз данных SQL для сетевого ресурса

Видео: Как сделать резервную копию баз данных SQL для сетевого ресурса
Видео: Дросселирование газов и жидкостей. Температура после дросселирования. Обучение персонала - YouTube 2024, Апрель
Anonim

Резервное копирование баз данных SQL обязательно. Мы уже рассмотрели способы легкого резервного копирования всех ваших баз данных SQL-сервера на локальный жесткий диск, но это не защищает от сбоев в работе диска и / или системы. В качестве дополнительного уровня защиты от этого типа катастрофы вы можете копировать или напрямую создавать свои резервные копии на сетевом ресурсе.

Резервное копирование на локальном компьютере, а затем копирование в сетевой ресурс

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

SET LocalFolder=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup SqlCmd -E -Q “Backup Database MyDB To Disk=’%LocalFolder%MyDB.bak'” XCopy “%LocalFolder%MyDB.bak” “192.168.16.55BackupDatabases” /Z /V DEL “%LocalFolder%MyDB.bak”

Этот скрипт выполняет следующие строки (строка за строкой):

  1. Устанавливает переменную в локальный каталог резервного копирования SQL.
  2. Создает резервную копию SQL MyDB (используя проверку подлинности Windows) SQL в локальном каталоге резервного копирования SQL.

  3. Копирует локальный файл резервной копии в общий сетевой ресурс.

  4. Удаляет локальный файл резервной копии.

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

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

Как правило, при попытке создать резервную копию непосредственно на сетевой ресурс с помощью команды, например:

SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

Вероятно, вы, скорее всего, получите ошибку:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

Эта ошибка возникает, несмотря на то, что вы запустили команду резервного копирования SQL, используя проверку подлинности Windows (ключ -E) и учетную запись Windows, как возможность доступа и копирования файлов на общий ресурс через проводник Windows.

Причина, по которой это действие выходит из строя, заключается в том, что команда SQL выполняется в пределах учетной записи, на которой работает служба SQL Server. Когда вы просматриваете список служб на своем компьютере, скорее всего вы увидите, что служба SQL Server работает как столбец «Вход в систему», либо «Локальная система», либо «Сетевая служба», которые являются системными учетными записями, которые не имеют доступа к сети.
Причина, по которой это действие выходит из строя, заключается в том, что команда SQL выполняется в пределах учетной записи, на которой работает служба SQL Server. Когда вы просматриваете список служб на своем компьютере, скорее всего вы увидите, что служба SQL Server работает как столбец «Вход в систему», либо «Локальная система», либо «Сетевая служба», которые являются системными учетными записями, которые не имеют доступа к сети.

В нашей системе выполняется резервное копирование в сетевой сетевой ресурс, потому что у нас есть служба SQL Server, работающая как локальная система, которая, опять же, не может получить доступ к каким-либо сетевым ресурсам.

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

Отредактируйте свойства службы SQL Server и на вкладке «Вход в систему» настройте службу для запуска в качестве альтернативной учетной записи с правами доступа к сети.

Когда вы нажмете «ОК», вы получите подсказку о том, что настройки не вступят в силу до перезапуска службы.
Когда вы нажмете «ОК», вы получите подсказку о том, что настройки не вступят в силу до перезапуска службы.
Перезапустите службу.
Перезапустите службу.
Теперь список служб должен показать, что служба SQL Server работает как настроенная вами учетная запись.
Теперь список служб должен показать, что служба SQL Server работает как настроенная вами учетная запись.
Теперь, когда вы запускаете команду для резервного копирования непосредственно в сетевой ресурс:
Теперь, когда вы запускаете команду для резервного копирования непосредственно в сетевой ресурс:

SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

Вы должны увидеть сообщение об успешном завершении:

Processed 152 pages for database ‘MyDB’, file ‘MyDB’ on file 1. Processed 2 pages for database ‘MyDB’, file ‘MyDB_log’ on file 1. BACKUP DATABASE successfully processed 154 pages in 0.503 seconds (2.493 MB/sec).

Теперь файл резервной копии находится в каталоге общего доступа к сети:

Image
Image

Вопросы

Важно отметить, что команда резервного копирования ожидает, что сможет напрямую подключиться к сетевому ресурсу без запроса учетных данных. Учетная запись, которую вы настроили для запуска службы SQL Server, должна иметь доверенное соединение с сетевым ресурсом, доступ к которому разрешает соответствующие учетные данные, в противном случае может возникнуть такая ошибка:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 1326(Logon failure: unknown user name or bad password.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

Эта ошибка указывает, что имя пользователя и пароль учетной записи не были приняты сетевым ресурсом, и команда не удалась.

Другая проблема, о которой следует помнить, - это резервное копирование непосредственно на сетевой ресурс, поэтому любые икоты в сетевом соединении могут привести к сбою резервного копирования. По этой причине вам следует делать резервные копии только в сетевых сетях, которые являются стабильными (то есть, вероятно, не VPN).

Последствия безопасности

Как упоминалось ранее, предпочтительнее использовать метод локального резервного копирования и затем копировать его на сетевой ресурс, поскольку он позволяет вам запускать SQL-службу как учетную запись только с локальным доступом к системе.

Запустив службу в качестве альтернативной учетной записи, вы откроете дверь для потенциальных проблем безопасности. Например, вредоносный SQL-скрипт может выполняться под альтернативной учетной записью и атаковать сетевые ресурсы. Кроме того, любые изменения в соответствующей учетной записи (смены пароля / истечения срока действия или удаления / отключения учетной записи) приведут к тому, что служба SQL Server не запустится.

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

Рекомендуемые: