2016-09-28 57 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");