小编典典

如何在SQL Server 2008中将备份与触发器一起使用?

sql

我有一个表格(周期),并创建了一个触发器

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.

我该怎么做才能解决此错误?


阅读 222

收藏
2021-05-16

共1个答案

小编典典

MSDN上的备份数据库

显式或隐式事务中不允许使用BACKUP语句。

触发器 总是存在 于交易中

如果您进行此操作,那么备份是数据库的事务一致性快照:将它包含在自己的事务中是没有意义的。

尤其重要的是,在RESTORE上,前滚/后退机制必须回滚包含备份的事务…这首先破坏了备份的目的…

2021-05-16