Назад | Перейти на главную страницу

Резервное копирование и восстановление запланированных заданий SQL Server

У нас недавно произошел сбой сервера; на этом сервере у нас было запланировано выполнение нескольких работ каждую ночь. Мы сделали резервную копию базы данных SQL Server (2005) до того, как сервер умер, и восстановили ее, однако я не вижу никаких заданий в агенте SQL Server. Резервное копирование базы данных не создает резервные копии заданий? Я не в курсе, что рабочие места где-либо сохраняются ... я облажался?

Задания хранятся в системной базе данных MSDB. Вы это подтвердили? Вам нужно восстановить его, чтобы вернуть свои рабочие места.

У вас есть два варианта. Если вы планируете в основном восстановить сервер без повреждений, как указал 20th Century Boy, информация о вакансии хранится в базе данных msdb. В дополнение к пользовательским базам данных вы должны делать резервные копии master и msdb, которые являются системными базами данных.

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

  1. Откройте SQL Server Management Studio.
  2. Подключитесь к соответствующему серверу SQL с помощью обозревателя объектов.
  3. Разверните агент SQL Server
  4. Разверните папку Jobs.
  5. Щелкните правой кнопкой мыши задание для создания сценария, и вы должны увидеть "Задание сценария", имеющее несколько уровней параметров.

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

Какой подход лучше - дело вкуса. Мне нравится использовать командные файлы из Windows, потому что я могу запускать другие вещи из командного файла, а командный файл легко реплицировать в новых установках, не беспокоясь о восстановлении msdb.

JR

Создание сценариев - это хорошо, потому что вы можете загружать сценарии в систему управления исходным кодом и вести журнал изменений.

Но вы также должны создать резервную копию MSDB. Ремни и подтяжки.

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

Восстанавливая рабочие места, не только ищите, какие вакансии вы сделал есть на месте, но рабочие места вы должен были на месте.

Теперь, когда прошло несколько недель, и вы (надеюсь) восстановили большую часть своих критических рабочих мест, вам следует вернуться к тому, что у вас есть, и подумать:

  • Ваша модель восстановления должна быть такой, какой она должна быть для базы данных?
  • Оптимизированы ли ваши задания резервного копирования для вашей модели восстановления и потребностей восстановления на определенный момент времени?
  • Поддерживаете ли вы индексы так, как должны?
  • Вы ведете статистику, как и положено?

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

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