PDA

View Full Version : سوال: سوال : بک آپگیری از دیتابیس با linq؟



ali.monje
جمعه 02 خرداد 1393, 12:30 عصر
سلام
دوستان بنده یه برنامه به زبان سی شارپ نوشتم و برا اتصال به پایگاه داده هم از فناوری LINQ استفاده می کنم.
تو بخشی از برنامه امکان پشتیبان گیری و ریستور دیتابیس وجود داره. ه کدهاشون به ترتیب زیر نوشتم :


بک آپ :

var db = new mylinkdbDataContext();
db.ExecuteCommand(@"BACKUP DATABASE " + db.Mapping.DatabaseName + " to DISK='" + strFileName + "'");


ریستور :

var db = new mylinkdbDataContext();
db.ExecuteCommand(@"ALTER DATABASE " + db.Mapping.DatabaseName + " SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE MASTER " + " RESTORE DATABASE " + db.Mapping.DatabaseName + " from DISK='" + strFileName + "' with REPLACE");





هنگام اجرای فرمان بک آپ گیری پیغام میده دیتابیس فعال هست و امکان بک آپ گیری وجود ندارد، خودم فک میکنم چون برنامه صفحه لاگین داره دیتابیس فعال میمونه , راهی بلدین بشه دیتابیس رو غیر فعال کرد تا بک آپ گرفته بشه ؟

parvizwpf
جمعه 02 خرداد 1393, 13:50 عصر
مشکل ارور رو سرچ کنید تو گوگل

ali.monje
شنبه 03 خرداد 1393, 20:17 عصر
مشکل ارور رو سرچ کنید تو گوگل

کله یه گونی به فارسی به انگلیسی با متن خود خطا سرچ زدم چیزی گیر نیومد :گریه:

در ضمن این هم تصویری ار خود خطایی که نمایش داده میشه

http://uc.mihanu.ir/uploads/14009482851.png

mehditik
پنج شنبه 08 خرداد 1393, 19:39 عصر
سلام من هم همین مشکل رو دارم دقیقا از من هم همین پیغام رو میده اگه تونستی مشکلت رو حل کنی حتما بذار تو سایت

ali.monje
پنج شنبه 08 خرداد 1393, 21:23 عصر
سلام من هم همین مشکل رو دارم دقیقا از من هم همین پیغام رو میده اگه تونستی مشکلت رو حل کنی حتما بذار تو سایت

به دو هفته ای شده با این پیغام دست و پنجه نرم میکنم حتی قبل از رورد به دیتابیس و استفاده از اون هم سعی بر بک آ گرفتن میکنم ارور میده با کدای مستقیم SQL هم میزنم خطا میده
موندم چشه این

شما هم پیگیر باشد من پیگیر هستم خبری شد همینجا درج میکنم

ZerOne
جمعه 09 خرداد 1393, 11:59 صبح
سلام . ببین این کد میتونه مشکلتون رو حل کنه. فزق زیادی باد کدتون نداره ولی مشکل منو حل کرده. البته تو پیغامی که گذاشتید داره اسم دیتابیس رو گیر میده!

Backup


SqlConnection connect;
string con = @"Data Source=" + server + ";Initial Catalog=" + dbName + ";Integrated Security=True";
connect = new SqlConnection(con);
connect.Open();
SqlCommand command;
command =
newSqlCommand(@"BACKUP DATABASE " + dbName + " TO DISK = '" + filePath + "'", connect);
command.ExecuteNonQuery();
connect.Close();


Restore:


SqlConnection connect;
string con = @"Data Source=.;Initial Catalog=" + dbName + ";Integrated Security=True";
connect = new SqlConnection(con);
connect.Open();
SqlCommand command;
command = new SqlCommand(
"ALTER DATABASE "+dbName+" SET SINGLE_USER WITH ROLLBACK IMMEDIATE" +
" USE master; RESTORE DATABASE " + dbName + " FROM DISK = '" + filePath + "' WITH REPLACE ", connect);
command.ExecuteNonQuery();
connect.Close();
connect.Open();
command = new SqlCommand("ALTER DATABASE "+dbName+" SET MULTI_USER ", connect);
command.ExecuteNonQuery();
connect.Close();

ali.monje
جمعه 09 خرداد 1393, 15:03 عصر
دوستان به نظرم پی به نحوه ایجاد مشکل بردم
پایگاه داده در حالتی که استفاده شده در خود SQl Server وجود نداره و فقط تنها رابط ارتبا اون برنامه کاربردی ساخته شده هست
وقتی درخواست فرمان بک آپ صادر میشه ، SQL به دنبال نام برنامه تو سیستم خودش میگرده و چون وجود نداره پیغام میده چنین پایگاه داده ای در دسترس نیست
چنتا برنامه مختلف رو با این حالت امتحان کردم که بک رو تو پایگاه داده اتچ کردم و فرمان درست اجرا شده و وقتی به صورت آزاد اتسفاده شده امکان اجرای کد وجود نداشته

Sir-Programmer
جمعه 09 خرداد 1393, 16:30 عصر
آقا منم همین دقیقاً همین مشکل دارم خواهشاً کمک کنید از LocalDB استفاده کردم چگونه باید دیتابیس رو دیتچ کنم ؟