2016-09-28 54 views
0
CREATE PROCEDURE GetDatabaseBackup 
AS 
BEGIN 
    DECLARE @MyFileName varchar(1000) 

    SELECT 
     @MyFileName= 'D:\DATABASE-BACKUP\genxMultiERPLive -' +  
       REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak' 

    BACKUP DATABASE genxMultiERPLive 
    TO DISK = @MyFileName 
END 
GO 

这是我的存储过程。当我执行这个存储过程时,它工作正常。当我在C#代码中调用数据库对象时,它会引发异常。当我从C#调用存储过程时,它会抛出异常

public bool DataBaseBackup() 
{ 
    int obj = _dbContext.GetDatabaseBackup(); 

    if (obj != 0) 
    { 
     return true; 
    } 

    return false; 
} 

_dbContext是我的数据库的对象。

的例外是:

无法执行备份或事务中恢复操作。
BACKUP DATABASE正在异常终止。

+0

是否'_dbContext.GetDatBaseBackup()'使用事务在它的身上行了? –

+0

我认为EF使用开箱即用的交易。 所以,如果这是真的,你需要弄清楚如何在交易之外调用这个过程......因为这就是错误呻吟的原因。 看起来像Haitham Shaddad为您发布了一个解决方案。 – AntDC

回答

1

你应该改变调用从

int obj= _dbContext.GetDatBaseBackup(); 存储过程

_dbContext.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction,"GetDatBaseBackup");