2016-05-06 178 views
0
string dbname = _dbContext.Database.Connection.Database; 

const string sqlCommand = @"BACKUP DATABASE [{0}] TO DISK = N'{1}' WITH NOFORMAT, 
    NOINIT, NAME = N'MajesticDb-Ali-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD, STATS = 10"; 

int path = _dbContext.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior 
    .DoNotEnsureTransaction, 
    string.Format(sqlCommand, dbname, "MajesticDB")); 

我正在使用此代碼進行數據庫備份。它工作正常,但是這個代碼正在用新的代碼取代以前的文件。我如何改變它,所以它不?帶實體框架的SQL數據庫備份6

+0

究竟是什麼問題? – Nino

+0

你是否用相同的名稱覆蓋數據庫備份? –

+0

是覆蓋。我想每次都保存新的文件 –

回答

1

你可以嘗試這樣的事:

string backupname= "MajesticDB" + DateTime.Now.ToString("yyyyMMddHHmm"); 
const string sqlCommand = @"BACKUP DATABASE [{0}] TO DISK = N'{1}' WITH NOFORMAT, NOINIT, NAME = N'MajesticDb-Ali-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"; 
     int path= _dbContext.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, string.Format(sqlCommand, dbname, backupname)); 

這種方式,備份名稱「MajesticDB」附加日期和時間,所以每次打電話給你的備份程序,數據庫將被備份用不同的名稱。

2

試試這個。

string dbname = _dbContext.Database.Connection.Database; 
string dbBackUp= "MajesticDB" + DateTime.Now.ToString("yyyyMMddHHmm"); 
const string sqlCommand = @"BACKUP DATABASE [{0}] TO DISK = N'{1}' WITH NOFORMAT, NOINIT, NAME = N'MajesticDb-Ali-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"; 
int path= _dbContext.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, string.Format(sqlCommand, dbname , dbBackUp)); 
+0

這行不正確'int path = _dbContext.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction,string.Format(sqlCommand,dbBackUp,「MajesticDB」));' – Draken

+0

我想你應該把'dbBackUp'而不是「MajesticDB」,因爲此刻你不重命名你的數據庫備份 – Draken

+1

@Draken編輯完成。輸入錯誤感謝您的注意。對不起,延遲迴復和編輯。 –