PDA

View Full Version : سوال: back up & restor in csharp



sabalank
سه شنبه 29 اردیبهشت 1388, 21:11 عصر
سلام
من یک ویندوز اپلیکیشن با c#نوشتم که پایگاه داده اش sqlexpress 2005 هست می خوام کدی از برنامه بک اپ بگیرم و بعد restor اش کنم از قطعه کدهای زیر استفاده کردم
برای Backup جواب می ده ولی Restor هیچکدوم کار نمی کنه:


1) backup


saveFileDialog1.FileName="mehrBackup" + PersianDate.Now.Year.ToString() + '-' + PersianDate.Now.Month.ToString() + '-' + PersianDate.Now.Day.ToString() + ".bak";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
string sConnect = Properties.Settings.Default.mehrConnectionString;
string dbName;


using (SqlConnection cnn = new SqlConnection(sConnect))
{
cnn.Open();
dbName = cnn.Database.ToString();


ServerConnection sc = new ServerConnection(cnn);
Server sv = new Server(sc);


string bacName = saveFileDialog1.FileName;
BackupDeviceItem bdi = new BackupDeviceItem(@""+bacName, DeviceType.File);


Backup bk = new Backup();
bk.Devices.Add(bdi);
bk.Action = BackupActionType.Database;
bk.BackupSetDescription = "ArchiveDataBase:" + PersianDate.Now.ToShortDateString();
bk.BackupSetName = "MehrBackupSet";
bk.Database = dbName;
bk.LogTruncation = BackupTruncateLogType.Truncate;


bk.SqlBackup(sv);
this.Cursor = Cursors.Default;
MessageBox.Show("پشتیبان گیری کامل شده است!","پیغام",MessageBoxButtons.OK,MessageBoxIcon.Information);
}


2)restore


string sConnect = Properties.Settings.Default.mehrConnectionString;
string dbName;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
try
{
using (SqlConnection cnn = new SqlConnection(sConnect))
{
cnn.Open();
dbName = cnn.Database.ToString();


cnn.ChangeDatabase("master");
cnn.Close();


ServerConnection sc = new ServerConnection(cnn);
Server sv = new Server(sc);


// Check that I'm connected to the user instance
// MessageBox.Show(sv.InstanceName.ToString());
string s = openFileDialog1.FileName;
// Create backup device item for the backup
BackupDeviceItem bdi = new BackupDeviceItem(@""+s , DeviceType.File);


// Create the restore object
Restore resDB = new Restore();
resDB.Devices.Add(bdi);
resDB.NoRecovery = false;
resDB.ReplaceDatabase = true;
resDB.Database = dbName;


// Restore the database
resDB.SqlRestore(sv);
this.Cursor = Cursors.Default ;
MessageBox.Show("بازیابی داده ها تکمیل شد”);
}




پیغام خطا:


Restore failed for Server 'SAHAR-C0F89F8D1\SQLEXPRESS'.
{"An exception occurred while executing a Transact-SQL statement or batch."}
'C:\\DOCUMENTS AND SETTINGS\\ADMINISTRATOR\\DESKTOP\\MEHRFINALVERSION-EDIT-ABHAR30FFTE\\MEHR\\BIN\\DEBUG\\MEHR.MDF' because it is in use by this session. It is recommended that the master database be used when performing this operation.\r\nRESTORE DATABASE is terminating abnormally."}

hojjat_gh
چهارشنبه 30 اردیبهشت 1388, 01:27 صبح
با سلام درباره این موضوع زیاد بحث شده شما باید ابتدا بانک اطلاعاتیتون رو تک کاربره کنید وسپس فایل بکاپتون رو ریستور کنید

mohsen_csharp
چهارشنبه 30 اردیبهشت 1388, 17:36 عصر
http://barnamenevis.org/forum/showthread.php?t=153480

mehdidanesh
چهارشنبه 07 بهمن 1388, 21:46 عصر
دوست عزیز این کدی که بالا نوشتی تو سی شارپ ویزاردی هم کار می کنه(پایگاه داده ای که توسط سی شارپ ایجاد شده)

csharpprogramer88
چهارشنبه 07 بهمن 1388, 21:52 عصر
دوست عزيز هم bckup وهم restore داره

http://barnamenevis.org/forum/showthread.php?t=194881&page=2
برو اميدوارم مشكلتو حل كنه