2016-07-03 2 views
0

Я хочу создать резервную базу данных с помощью триггера. Когда я пишу этот запросРезервное копирование базы данных с помощью триггера

CREATE TRIGGER test 
ON Table_1 
INSTEAD OF INSERT, UPDATE, DELETE 
AS 
    BACKUP DATABASE test 
    TO DISK = 'C:\test.bak' WITH DIFFERENTIAL, 
    NAME = N'pcrm-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD, STATS = 50 
GO 

Я получаю сообщение об ошибке:

Msg 3021, уровень 16, состояние 0, Procedure SPTEST, Line 6
Не удается выполнить резервное копирование или восстановление в рамках транзакции ,

Msg 3013, уровень 16, состояние 1, процедура SPTEST, строка 6
BACKUP DATABASE заканчивается аномально.

Пожалуйста, помогите мне

+1

Я не гуру SQL Server, но, кажется, это сообщение об ошибке будет сказать, что вы не можете назвать 'BACKUP DATABASE' внутри триггера. –

+5

Возможный дубликат [Как использовать резервную копию с триггерами в SQL Server 2008?] (Http://stackoverflow.com/questions/3609119/how-to-use-backup-with-triggers-in-sql-server-2008) –

+2

Зачем вам это нужно? резервные копии должны быть частью плана обслуживания, а не результатом изменения данных. –

ответ

0
CREATE TRIGGER test 
    ON Table_1 
    AFTER INSERT 
AS 
BEGIN 
    COMMIT TRANSACTION 
     BACKUP DATABASE test TO DISK = N'C:\test.bak' WITH NOFORMAT, NOINIT, NAME = N'pcrm-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
    BEGIN TRANSACTION 
END 
GO 
+0

Можете ли вы объяснить свое решение? – user7294900

Смежные вопросы