2016-09-28 9 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()'を使用トランザクションに

int obj= _dbContext.GetDatBaseBackup(); からストアドプロシージャを呼び出す行を変更する必要がありますか? –

+0

私はEFがすぐに取引を使用すると思います。 それが本当であれば、この手続きを特にTransaactionの外で呼び出す方法を工夫する必要があります。つまり、それが間違っていることに気づいています。 Haitham Shaddadがあなたのために解決策を投稿したようです。 – AntDC

答えて

1

あなたはそれの体内に

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

関連する問題