Как использовать резервное копирование с триггерами в SQL Server 2008? - PullRequest
0 голосов
/ 31 августа 2010

У меня есть таблица (цикл), и я создал триггер

alter trigger AnyName on Cycles
for insert,update,delete
AS
BACKUP DATABASE medrepcrm TO  DISK = N'C:\medrepcrm.bak' WITH NOFORMAT, INIT,  NAME = N'pcrm-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Но когда я вставляю, обновляю или удаляю таблицу Cycle, это приводит к ошибке.

Msg 3021, Level 16, State 0, Procedure AnyName, Line 8
Cannot perform a backup or restore operation within a transaction.
Msg 3013, Level 16, State 1, Procedure AnyName, Line 8
BACKUP DATABASE is terminating abnormally.
The statement has been terminated.

Что я могу сделать, чтобы исправить эту ошибку?

Ответы [ 2 ]

2 голосов
/ 30 января 2011

РЕЗЕРВНАЯ БАЗА ДАННЫХ на MSDN говорит

Оператор BACKUP недопустим в явной или неявной транзакции.

Триггер всегда в транзакциях

Если вы проработаете это, резервная копия, которая является транзакционно-согласованным снимком базы данных: для нее не имеет смысла находиться в собственной транзакции.

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

0 голосов
/ 25 июня 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...