Папка базы данных только в случае успешного выполнения резервного копирования

Это может быть легко для кого-то, но я пока не нашел простого решения.

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

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

Use [Master] BACKUP DATABASE [databaseName] TO DISK='D:\Backup\databaseName\20100122.bak' ALTER DATABASE [databaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE [databaseName] 

но я беспокоюсь, что DROP произойдет, даже если BACKUP завершится с ошибкой.

Как я могу изменить сценарий, поэтому, если BACKUP завершится с ошибкой, DROP не произойдет?

Заранее спасибо!

Если ваша версия SQL Server равна 2005 году или выше, вы можете обернуть свои заявления с помощью try catch. Если резервное копирование не удастся, оно перейдет к catch, не отбрасывая базу данных …

 Use [Master] BEGIN TRY BACKUP DATABASE [databaseName] TO DISK='D:\Backup\databaseName\20100122.bak' ALTER DATABASE [databaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE [databaseName] END TRY BEGIN CATCH PRINT 'Unable to backup and drop database' END CATCH 

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

 USE [Master] DECLARE @errorCode int BACKUP DATABASE [databaseName] TO DISK='D:\Backup\databaseName\20100122.bak' SET @errorCode = @@ERROR IF (@errorCode = 0) BEGIN ALTER DATABASE [databaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE DROP DATABASE [databaseName] END 

Это самый простой способ, о котором я могу думать, а также позволяющий вам распознавать известные коды ошибок и обрабатывать их по-разному, если вам нужно. SELECT * FROM master.sys.messages дает вам список всех известных кодов ошибок и сообщений, если вы хотите их продолжить.

  • SQL Server Management Studio 2008: сохраняйте диаграммы баз данных без применения таблиц еще
  • Заставить хранимую процедуру для запуска однопоточной
  • 1 скрипт Powershell 2 таблицы SQL
  • Веб-клиент SQL Server?
  • Не удалось подключиться к хост-серверу. Ява
  • Является ли хорошей практикой использование одной хранимой процедуры, которая принимает переменное количество параметров
  • Повысить производительность вставки данных для одного-многих отношений в EF
  • Ресурсы для разработки высокопроизводительной базы данных SQL Server
  • Управление миграцией БД: скрипты и инструменты
  • Восстановление резервной копии базы данных по сети
  • Как заставить индексы SQL Server занимать меньше места?
  • Давайте будем гением компьютера.