首页 > 数据库 > 数据库其它

C#通过EntityFramework执行SQL Server数据库备份语句报错:无法在事务内执行备份或还原操作

admin 数据库其它 2021-05-25 09:25:53 数据库 
后台-系统设置-扩展变量-手机广告位-内容正文底部

原因分析

EF中的Database.ExecuteSqlCommand执行sql命令时自动将sql命名包装为一个事务,然而SQL Server数据库中不允许在事务内执行备份或还原操作,发生冲突,故报错。

解决思路

让Database.ExecuteSqlCommand执行sql命令时不将sql命名包装为一个事务,而是直接执行sql命令。

解决办法

Database.ExecuteSqlCommand方法有两个重载,使用另外一个重载方法

Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior transactionalBehavior, string sql, params object[] parameters);

将第一个形参System.Data.Entity.TransactionalBehavior transactionalBehavior设置为System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction,问题解决。

官方对System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction的解释为:
如果存在现有事务,则使用它,否则在没有事务的情况下执行命令或查询。

文章来源:https://blog.csdn.net/m0_49028841/article/details/117192833

后台-系统设置-扩展变量-手机广告位-内容正文底部
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:https://www.jcdi.cn/shujukuqita/30765.html

留言与评论(共有 0 条评论)
   
验证码:
后台-系统设置-扩展变量-手机广告位-评论底部广告位

教程弟

https://www.jcdi.cn/

统计代码 | 京ICP1234567-2号

Powered By 教程弟 教程弟

使用手机软件扫描微信二维码