PDA

View Full Version : امکان backUp گیری از بانک اطلاعاتی در برنامه ای که از sqlExpress استفاده میکند؟



sajad_3dmax
چهارشنبه 03 تیر 1394, 09:06 صبح
با سلام خدمت همه دوستان عزیز.
آیا امکان اینکه از بانک تحت sqlExpress پشتیبان بگیریم هست؟
درصورت امکان لطف میکنید آموزش بدید. تشکر
راستش بنده تا بحال بک آپ نگرفتم از بانک و نمیدونم اینکار رو باید از طریق کد نویسی تو سی شارپ انجام بدم و یا تو خود Sql

alireza264
چهارشنبه 03 تیر 1394, 10:54 صبح
سلام
با کد با ید انجام بشه و قبل از اینکه دیتا بیس باز بشه باید اینکارو بکنی. و دوتا فایل رو باید zip کنی

using (FileStream ZipToOpen = new FileStream(ZipFilePath, FileMode.CreateNew))
{
using (ZipArchive ZArchive = new ZipArchive(ZipToOpen, ZipArchiveMode.Create))
{
ZArchive.CreateEntryFromFile(FileToZip1, File1);
ZArchive.CreateEntryFromFile(FileToZip2, File2);
}
}

TeacherMath
چهارشنبه 03 تیر 1394, 11:29 صبح
namespace Restaurant.Repository.BakupRestoreDB{
public class BackupDb
{
private static readonly string Constring = ConnectionString.GetConnectionString();
public static string BackupDatabase(string path)
{
var pc = new PersianCalendar();
var now = DateTime.Now;
var year = pc.GetYear(now);
var month = pc.GetMonth(now);
var day = pc.GetDayOfMonth(now);
var fileName= string.Format("RestaurantBackUp-{0}-{1}-{2}.bak", year, month, day);
var backUpFile = path +"\\"+ fileName;
var sConnect = Constring;
var cnn = new SqlConnection(sConnect);
try
{
cnn.Open();
var deleteOlderFiles = DeletOlderBackUp(path, "RestaurantBackUp");
if (!deleteOlderFiles)
{
return null;
}
var dbName = cnn.Database;
var sc = new ServerConnection(cnn);
var sv = new Server(sc);
// Create backup device item for the backup
var bdi = new BackupDeviceItem(backUpFile, DeviceType.File);
// Create the backup informaton
var bk = new Backup();
bk.Devices.Add(bdi);
bk.Action = BackupActionType.Database;
bk.BackupSetDescription = "Restaurant";
bk.BackupSetName = "RestaurantSet";
bk.Database = dbName;
bk.ExpirationDate = DateTime.Now.AddMonths(1);
bk.LogTruncation = BackupTruncateLogType.Truncate;
//bk.Complete += BackUpComplete;
// Run the backup
bk.SqlBackup(sv);
return fileName;
}
catch (Exception)
{


return null;
}
finally
{
cnn.Close();
}

}
private static bool DeletOlderBackUp(string path, string perfix)
{
try
{
var directory = new DirectoryInfo(path);


foreach (var file in directory.GetFiles().Where(file => file.Name.Contains(perfix)))
{
file.Delete();
}
return true;
}
catch (Exception)
{


return false;
}
}

public static bool RestoreBackup(string path,string backUp)
{
var sConnect = Constring;
var cnn = new SqlConnection(sConnect);
try
{
cnn.Open();
var backUpFile = path + "\\" + backUp;
if (File.Exists(backUpFile))
{
var dbName = cnn.Database;
cnn.ChangeDatabase("master");
var sc = new ServerConnection(cnn);
var sv = new Server(sc);
// Create backup device item for the backup
var bdi = new BackupDeviceItem(backUpFile, DeviceType.File);
// Create the restore object
var resDb = new Restore();
resDb.Devices.Add(bdi);
resDb.NoRecovery = false;
resDb.ReplaceDatabase = true;
resDb.Database = dbName;
// Restore the database
resDb.SqlRestore(sv);
return true;
}
return false;
}
catch (Exception)
{


return false;
}
finally
{
cnn.Close();
}

}
}
}