PDA

View Full Version : سوال: خطا در گرفتن Backup از sqlexperess2005



shahin60
یک شنبه 15 خرداد 1390, 11:15 صبح
سلام دوستان
این کدی که برای گرفتن بک اپ نوشتم خطا میگیره

ShamsiDateClass.Dateres tr = ShamsiDateClass.ShamsiDate();
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.AddExtension = true;
saveFileDialog.CheckFileExists = false;
saveFileDialog.CheckPathExists = true;
saveFileDialog.OverwritePrompt = true;
saveFileDialog.FileName = "Backup " + tr.Datehal;
saveFileDialog.Filter = "Backup File (*.Bak)|*.Bak";
saveFileDialog.DefaultExt = "Bak";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.InitialDirectory = System.Windows.Forms.Application.StartupPath + "\\Backup";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
this.Refresh();
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Vahdat.mdf;Integrated Security=True;User Instance=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;//گرفتن نام دیتابیس
cmd.Connection.Close();
SqlConnection.ClearAllPools();
string query = "BACKUP DATABASE [" + dbname + "] TO DISK ='" + saveFileDialog.FileName + "'";
cmd.Connection = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
this.Refresh();
MessageBox.Show("نسخه پشتيبان به طور كامل ايجاد شد ", "پيام", MessageBoxButtons.OK, MessageBoxIcon.Information);

70731

gerdioz
یک شنبه 15 خرداد 1390, 16:39 عصر
سلام من یک کد هم برای Backup هم Restore برات می زارم سوالی بود در خدمتم
Bck up
SaveFileDialog sfd = new SaveFileDialog();
sfd.InitialDirectory = Environment.SpecialFolder.Desktop.ToString();
sfd.Filter = "database backup files (*.bak)|*.bak|All files (*.*)|*.*";
sfd.RestoreDirectory = true;
sfd.ShowDialog();
path = sfd.FileName.ToString();
textBox1.Text = path;
if (path != "")
{
if (FarsiMessagbox.Show(path, "محل ذخیره سازی", FMessageBoxButtons.YesNo, FMessageBoxIcon.Question) == DialogResult.Yes)
{
con.ExecuteNonQuery("BACKUP DATABASE Clup TO DISK='" + path + "' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10", "عملیات تهیه نسخه پشتیبان با موفقیت انجام گردید");
textBox1.Clear();
path = "";
}
}
else
err.NoPathBackup();
//================================
restore
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = false;
ofd.InitialDirectory = Environment.SpecialFolder.Desktop.ToString();
ofd.Filter = "database backup files (*.bak)|*.bak|All files (*.*)|*.*";
ofd.RestoreDirectory = true;
ofd.ShowDialog();
textBox1.Text = path;
if (ofd.FileName.ToString() != "")
{
if (FarsiMessagbox.Show("با بروز رسانی اطلاعات فعلی شما از بین میرود در صورت نیاز از اطلاعات فعلی نسخه گشتیبان تهیه نمایید آیا بروز رسانی انجام گردد؟", "بروز رسانی", FMessageBoxButtons.YesNo, FMessageBoxIcon.Question) == DialogResult.Yes)
{
path = ofd.FileName.ToString();
textBox1.Text = path;
con.ExecuteNonQuery(@"use master" + (char)13 + @"restore database [clup] from disk =N'" + path + "' with file=1,replace,stats=10", "بروز رسانی با موفقیت انجام گردید");
path = "";
textBox1.Clear();
}
}
else
err.NoPathBackup();

shahin60
یک شنبه 15 خرداد 1390, 18:58 عصر
دوست عزیز کد من بک آپ میگیره و خطا هم میگیره
باید از تنظیماتsql باشه نمی دونم چیه
دوستان راهنمایی کنن؟

imanamami
یک شنبه 15 خرداد 1390, 19:13 عصر
سلام دوست عزیز
ببین من این حرف رو 10 بار تو این تالار زدم
وقتی برنامه شما در حال اجراست بانک اطلاعاتی غیر قابل بازگشت می باشید و امکان بک آپ گیری نداره.
شما همین کد رو تو یک برنامه دیگه بنویس و زمانی که برنامه شما در حال اجرا نیست شروع به بازگردانی کنید جواب میدهد.ولی زمانی در همان برنامه در حال اجرا می خواهید فایل خود را بازگردانی کنید خطا خواهد داهد و می دهد.
باید restart کنید برنامه رو قبل از بازگردانی
تو اینجا گفته ام سرچ کنی پیدا می کنید

موفق باشید

shahin60
یک شنبه 15 خرداد 1390, 19:21 عصر
شما انگار توجه نکردید گفتم بک آپ میگیره فقط تو اون خط خطا میگیره که اونم میشه با try cach حل کرد
برنامه های زیادی دیدم که در حال اجرا بک آپ میگیره
اینجا من از sql exp 2005 ستفاده کردم
تو پروژهای قبلیم از sql server استفاده کردم ومشکلی نداشته
دوستان راهنمایی کنن؟
لازم به ذکره که تویه برنامه دیگه هم تست کردم همین خطا رو میده

Mrs.Net
یک شنبه 15 خرداد 1390, 20:05 عصر
شما با همین نام سرور به بانک متصل هم شدید؟ .\sqlexpress

zarrinnegar
یک شنبه 15 خرداد 1390, 20:19 عصر
شما در sqlserver پایگاه داده ات در sql معرفی شده و با تغییر دیتابیس از دیتابیس دیگه برات backup میگیره ولی ایجوری که من تو کد دیدم مشتقیم به فایل وصال شدی و این یعنی توی sqlexpress متصل نیست اگه بک آپی هم میگیره شاید مال این دیتابیس نیست
چک کن ببین توی sqlexpress دیتابیس معرفی شده attach شده یا نه

zarrinnegar
یک شنبه 15 خرداد 1390, 20:21 عصر
عذر میخوام که تو تایپ کم دقتم

shahin60
دوشنبه 16 خرداد 1390, 01:29 صبح
شما با همین نام سرور به بانک متصل هم شدید؟ .\sqlexpress

بله با همین نامه

shahin60
دوشنبه 16 خرداد 1390, 01:30 صبح
شما در sqlserver پایگاه داده ات در sql معرفی شده و با تغییر دیتابیس از دیتابیس دیگه برات backup میگیره ولی ایجوری که من تو کد دیدم مشتقیم به فایل وصال شدی و این یعنی توی sqlexpress متصل نیست اگه بک آپی هم میگیره شاید مال این دیتابیس نیست
چک کن ببین توی sqlexpress دیتابیس معرفی شده attach شده یا نه

بانک اتچ شده

Directx
دوشنبه 16 خرداد 1390, 01:45 صبح
دوست عزیز همیشه وقتی ما از بانکمون بک اپ تهیه می کنیم sql server یه تاریحچه ای از این بک اپ و طرز تهیه ی اون و چند تا مشخصه ی دیگه ی این بک اپ گیری رو تو بانک msdb ذخیره می کنه(واسه رو مبادا) شما می تونید اون رو با مراجعه به جداول msdb پیدا کنید دلیل این خطا هم اینه که نمی تونه این تاریخچه (بهتر بگم log) رو تهیه کنه علت دقیقش رو نمی دونم ولی شما با استفاده از managment studio یه بک اپ دستی بگیرید ببیید خطا می ده یا نه اگه خطا می ده متنشو بدید شاید بشه کمک کرد

shahin60
دوشنبه 16 خرداد 1390, 08:48 صبح
msdb چیه چه تغییریش بدم؟

haghft
دوشنبه 16 خرداد 1390, 10:09 صبح
msdb چیه چه تغییریش بدم؟
msdb Database (http://msdn.microsoft.com/en-us/library/ms187112.aspx)
شما در قسمت سرچ ویندوز بنویس MSDBData تا به جداول دسترسی پیدا کنی و MSDBLog برای logش.