PDA

View Full Version : مشکل با Backup گیری



jas1387
سه شنبه 20 اسفند 1387, 22:28 عصر
سلام خدمت دوستان

کدی برای Backup نوشتم که با error زیر روبرو شدم


The process cannot access the file 'G:\Phone\bin\Debug\Database\Phone.mdf' because it is being used by another process.

لطفا مرا راهنمایی کنید

rnm123
سه شنبه 20 اسفند 1387, 22:39 عصر
دوست عزیز برای حل این مشکل کافی است که از کلیه tab های باز شده برای مشاهده و modify بانک مورد نظر خود در SQL Server Management Studio خارج شوید . ( یعنی در حال استفاده از بانک نباشید )

hana2064
چهارشنبه 21 اسفند 1387, 07:49 صبح
سعی کنید همیشه پس از اجرای برنامه و باز شدن اولین فرم از backup گیری از اطلاعات استفاده کنید تا بانک در حال استفاده نباشه.

jas1387
چهارشنبه 21 اسفند 1387, 14:42 عصر
( یعنی در حال استفاده از بانک نباشید )

در فرم من که یک فرم mdi هست هیچ ارتباطی با دیتابیس ندارم ولی باز با این پیغام روبرو می شوم لطفا مرا راهنمایی کنید

باسپاس از توجه شما

rnm123
چهارشنبه 21 اسفند 1387, 22:17 عصر
دوست عزیز ببینید من خودم یکبار با این مشکل روبرو شدم و علت آن هم این بود که برنامه خود را در محیط ویژوال باز کرده بدوم و داشتم کارهای کدنویسی اونرو انجام میدادم و در عین حال SQL Server Management Studio را هم باز کرده بودم و بانک اطلاعاتی خود را جهت کنترلو ویرایش در آن باز گذاشته بودم وقتی برنامه خود را اجرا میکردم و میخواستم بک آپ بگیرم خطا فوق را میداد ولی وقتی از محیط SQL Server Management Studio خارج شدم برنامه به خوبی کار کرد. شما هم امتحان کنید مشکلتان باید حل شود

jas1387
پنج شنبه 22 اسفند 1387, 11:45 صبح
این کد من است برای backup گیری لطفا یه نگاهی به آن بیندازید و مرا رهنمایی کنید



SaveFileDialog save = new SaveFileDialog();
save.Title = "تعیین مکان ذخیره پشتیبان";
save.FileName = "Backup";// +PersianDate(DateTime.Today);

save.Filter = "(*.*)|*.*";
if (save.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{

path = save.FileName;
System.IO.Directory.CreateDirectory(path);
// con.con.Dispose();

File.Copy(Application.StartupPath + "\\Database\\phone.mdf", path + "\\phone.mdf");
File.Copy(Application.StartupPath + "\\Database\\phone_log.ldf", path + "\\phone_log.ldf");
MessageBox.Show("از دیتابیس با موفقیت پشتیبان گرفته شد", "پیغام", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
}
else

{
MessageBox.Show("از دیتابیس پشتیبانی گرفته نشد مجددا سعی کنید", "پیغام", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
}

rnm123
دوشنبه 26 اسفند 1387, 22:56 عصر
دوست عزیز مشخصا در کد شما ایرادی نیست و پیغام هم بطور واضح علت خطا را بیان میکند فایل دیتابیس شما توسط پروسه دیگری قفل شده است همین! ممکن است برنامه شما در لحظه ورود به برنامه جهت نوشتن اطلاعات یا کنترل آن دیتابیس را باز کرده باشد ؟ به هر حال شما باید کل برنامه را چک کنید اصلا یک کار کنید قبل از کد فوق کانکشن خود را ببندید اگر در برنامه از sqlreader هم استفاده کرده باشید آن را هم ببندید

h_r_sh
چهارشنبه 12 فروردین 1388, 03:24 صبح
پس از هر بار استفاده از Connection آنرا Dispose كنيد و يا از using استفاده كنيد.
ضمنا كد شما صرفا يك كپي از ديتا بيس تهيه مي كند كه در sql server قابل بازيافت نيست. براي اين منظور بايد از يك T-Sql براي تهيه يك backup واقعي استفاده كنيد. آدرس زير حاوي يك dll است كه مي توانيد از آن براي Backup و Restore كردن ديتا بيس استفاده كنيد.

http://barnamenevis.org/forum/showthread.php?t=64210&page=13

notelo
چهارشنبه 12 فروردین 1388, 11:22 صبح
سلام

قبل از قطعه کد Backup گیری از کد زیر استفاده کنید...


SqlConnection.ClearAllPools();

notelo
چهارشنبه 12 فروردین 1388, 11:25 صبح
http://barnamenevis.org/forum/showthread.php?t=152767