Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Завершение исполнения всего шага скрипта при ошибке  [new]
Stepan Razin
Member

Откуда:
Сообщений: 37
Для архивации баз используется простейший скрипт, состоящий из одного шага, который содержит строчки для архивирования всех баз по очереди:

BACKUP DATABASE [UT_82] TO  DISK = N'D:\Backup\SQL-Bases\UT_82_Daily.bak' WITH NOFORMAT, INIT,  NAME = N'UT_82_Daily', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

BACKUP DATABASE [BP_82] TO  DISK = N'D:\Backup\SQL-Bases\BP_82_Daily.bak' WITH NOFORMAT, INIT,  NAME = N'BP_82_Daily', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO


... и так далее для всех баз.

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

А хочется, чтобы просто записывал в лог ошибку и продолжал дальше.

Понятно, что можно каждую строчку выделить в отдельный шаг, но хочется разобраться так.
4 окт 13, 08:25    [14921686]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
Stepan Razin
Member

Откуда:
Сообщений: 37
Вдогонку - сорри за "нерусский" пост %о))

"Хочется, чтобы при сбое архивации одной из баз, остальные продолжили архивироваться, а ошибка просто записалась в лог.
4 окт 13, 08:28    [14921691]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Stepan Razin
Понятно, что можно каждую строчку выделить в отдельный шаг, но хочется разобраться так.

Ну так пишите обработку ошибок. Само по себе ничего не случится
4 окт 13, 09:15    [14921857]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Stepan Razin, проверяйте наличие базы в sys.databases, оборачивайте каждый бэкап в try...catch
4 окт 13, 10:15    [14922193]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Stepan Razin
хочется разобраться так.
Переделайте на цикл по списку баз (из sysdatabases или из своего), в цикле делайте строку с командой бакапа и выполняйте в динамическом SQL в TRY-CATCH, если версия позволяет. Если не позволяет, то только отдельные шаги.
4 окт 13, 11:24    [14922642]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
Baal
Member

Откуда:
Сообщений: 44
alexeyvg,

И, кстати, отдельные шаги дадут лучшую управляемость процесса. Перестартовать можно будет с любого места, а не только с самого начала.
4 окт 13, 11:42    [14922737]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Baal
alexeyvg,

И, кстати, отдельные шаги дадут лучшую управляемость процесса. Перестартовать можно будет с любого места, а не только с самого начала.
Это да, но возможность перестартовать с любого места можно сделать другими способами. Я бы всё таки сделал цикл, как то оно удобнее для управления. По крайней мере, если баз много, а не 3-5-10
4 окт 13, 11:56    [14922832]     Ответить | Цитировать Сообщить модератору
 Re: Завершение исполнения всего шага скрипта при ошибке  [new]
Stepan Razin
Member

Откуда:
Сообщений: 37
Всем спасибо, баз всего 5 штук, так что проще сделать отдельными шагами.
4 окт 13, 20:51    [14926127]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить