我有一个表格(周期),并创建了一个触发器
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.
我该怎么做才能解决此错误?
MSDN上的备份数据库说
显式或隐式事务中不允许使用BACKUP语句。
触发器 总是存在 于交易中
如果您进行此操作,那么备份是数据库的事务一致性快照:将它包含在自己的事务中是没有意义的。
尤其重要的是,在RESTORE上,前滚/后退机制必须回滚包含备份的事务…这首先破坏了备份的目的…