PDA

View Full Version : سوال: ذخیره نشدن فایل روی فایل قبلی



MS.Worm
یک شنبه 06 فروردین 1391, 22:16 عصر
با سلام
خسته نباشید
در برنامه ای از دو کنترل savefiledialog , openfiledialog برای تهیه نسخه پشتیبانی و بازیابی اون استفاده کردم.
یه مشکل دارم.
وقتی از دیتابیس نسخه پشتیبان میگیرم. حالا وقتی اطلاعات رو کم و زیاد میکنم و یه نسخه پشتیبان دیگه از دیتابیس روی همون فایل قبلی ذخیره میکنم. وقتی بازیابی میکنم همون نسخه اول که پشتیبان گرفتم رو میاره یعنی پشتیبان دوم رو که روی اولی ذخیره کردم انگار ذخیره نکرده.
مشکل کجاست؟
با تشکر

MS.Worm
یک شنبه 06 فروردین 1391, 23:56 عصر
از دوستان کسی نمیدونه راه حل چیه؟

asadegha
دوشنبه 07 فروردین 1391, 00:45 صبح
دستوراتی که نوشتی رو بزار ببینیم.
ولی برای پشتیبام گرفتن از دیتابیس کل فایل دیتابیس رو کپی نمیکنن.

MS.Worm
دوشنبه 07 فروردین 1391, 17:25 عصر
این کد پشتیبان گیری

sfdBackup.DefaultExt = "Bak";
sfdBackup.FileName = "پشتیبانی" + PersianDate.Now.Day.ToString() + "." + PersianDate.Now.Month.ToString() + "." + PersianDate.Now.Year.ToString();
sfdBackup.Filter = "Backup File (*.Bak)|*.Bak";
sfdBackup.OverwritePrompt = true;
sfdBackup.Title = "دریافت مسیر و نام برای تهیه نسخه پشتیبان";
sfdBackup.InitialDirectory = "D:\\";

if (sfdBackup.ShowDialog() == DialogResult.OK)
{
try
{
objCon.Close();
objCom.Connection = objCon;
objCom.CommandText = @"BACKUP DATABASE db_Document TO DISK='" + sfdBackup.FileName.ToString() + "'";
objCon.Open();
objCom.ExecuteNonQuery();
MessageBox.Show("عملیات پشتیبان گیری با موفقیت انجام شد", "تهیه نسخه پشتیبان", MessageBoxButtons.OK, MessageBoxIcon.Information);
objCon.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

اینم کد بازیابی

ofdRestore.Filter = "Restore File (*.Bak)|*.Bak";
ofdRestore.Title = "دریافت مسیر و نام برای بازیابی نسخه پشتیبان";
ofdRestore.InitialDirectory = "D:\\";

if (ofdRestore.ShowDialog() == DialogResult.OK)
{
try
{
objCon.Close();
objCom.Connection = objCon;
objCom.CommandText = @"ALTER DATABASE db_Document SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE db_Document FROM DISK='" + ofdRestore.FileName.ToString() + "'";
objCon.Open();
objCom.ExecuteNonQuery();
MessageBox.Show("عملیات بازیابی نسخه پشتیبان با موفقیت انجام شد", "بازیابی نسخه پشتیبان", MessageBoxButtons.OK, MessageBoxIcon.Information);
objCon.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

mehran_337
سه شنبه 05 اردیبهشت 1391, 11:44 صبح
مشکل من اینجاست که وقتی از To Disk استفاده می کنم مسیر ها رو خطا می گیره


Msg 3201, Level 16, State 1, Line 1
Cannot open backup device 'c:\MyDatabase.bak'. Operating system error 5(failed to retrieve text for this error. Reason: 1815).
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.


اما وقتی مسیر را بدون نام درایو بنویسیم درون شاخه بک آپ خود اسکیوال سرور ذخیره می کنه و مشکلی پیش نمیاد

Mahmoud.Afrad
سه شنبه 05 اردیبهشت 1391, 12:38 عصر
در ویندوز سون و ویستا اجازه نمیده روی درایو ویندوز این کار رو انجام بدید. روی درایوهای دیگه تون هم امتحان کنید.

mehran_337
سه شنبه 05 اردیبهشت 1391, 12:46 عصر
واقعیتش اینه که این دستور بهمراه To Disk همه جای این سایت هست . جالب تر اینکه هر کی هم اونو اجرا کرده ارور داشته . هرکی هم این کد و می زاره نمی دونه که این ارور کجاست .
من همه جوره امتحان کردم.
اصلا رفتم توی خود اسکیول منیجمنت . این دستور را بعنوان کوئری اجرا کردم :
backup database [sazman] to disk ='d:\\myBackup.bak'

با \\ با \ بدون کوتیشن بی کوتیشن و درایو را همه جوره تغییر دادم.
فقط در صورتی جواب می ده که نام درایو ننویسیم و در همون مسیر خود اسکیوال سرور (C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup) با موفقیت بک آپ می گیره.

mehran_337
سه شنبه 05 اردیبهشت 1391, 12:53 عصر
یه چیز جالب درایو e , f جواب داد بدون هیچ کار اضافه ای . اما c , d جواب نمی ده . همشون هم ntfs هست