دسته بندی ها
12:58 1399/10/05

ایجاد Backup و Restore کردن دیتابیس توسط دستورات انتیتی فریم ورک

مشخصات سوال کننده :
کاربر : Manoochehr     امتیاز کاربر : 12     رتبه کاربر : 59
دسته بندی : WPF Sql Server Entity Framework سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4082
پاسخ دهنده : pedram_khan 19:37 1399/10/08

ایجاد Backup و Restore کردن دیتابیس توسط دستورات انتیتی فریم ورک

ببینید انتیتی فریم ورک یک ORM هست. یعنی انتیتی فریم ورک برای ارتباط بین نرم افزار شما و دیتابیس و ایجاد کوئری روی اطلاعات دیتابیس ایجاد شده. به عبارتی میشه گفت Entity Framework برای مدیریت اطلاعات و تعاملات بین نرم افزار و دیتابیس هست. عملیات Backup و Restore جزو عملیات اصلی و مدیریتی خود دیتابیس هست و اصولا ORM ها خصوصا انتیتی فریم ورک قابلیت زیادی برای تغییرات اساسی مثل یک آپ یا ری استور دیتابیس ارائه نمیدن.

بهتره برای بک آپ گیری از خود Sql Server Managment Studio استفاده کنید و با تعریف Job به صورت اتوماتیک عملیات بک آپ گیری رو انجام بدید. 

 

ایجاد بک آپ در Sql Server توسط دستورات T-Sql

BackUp DataBase DataBaseName To Disk = 'path' With Compression

توسط دستور بالا می تونید بک آپ گیری انجام بدید.

 

البته برای بک آپ گیری از طریق خود نرم افزار امکاناتی وجود داره. میتونید از ExcuteSqlCommand هم استفاده کنید.

string dbname = db.Database.Connection.Database;
string sqlCommand = @"BACKUP DATABASE [{0}] TO  DISK = N'{1}' WITH NOFORMAT, NOINIT,  NAME = N'MyAir-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
db.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, string.Format(sqlCommand,dbname, "Amin9999999999999"));

 

ویرایش شده در سه شنبه 9 دی 1399 ساعت 13:24:48
به این پاسخ امتیاز بدهید    0
امتیاز: 277 رتبه: 6
1 نظر
Manoochehr : ممنون ازپاسختون اگربراتون مقدوره دستور دوم رو بیشتر توضیح بدین سپاس گذارم

امتیاز کاربر : 12   رتبه کاربر : 59   تاریخ ثبت : 12:43 1399/10/09
پاسخ دهنده : vahdat 08:57 1399/10/17

باسلام 
من خودم از این استفاده کردم 
فقط یه نکته داره روی درایو ویندوز بعضی وقتا خطا میده 
روی درایوی بجز ویندوز باید ذخیره کن کاربر

 

        string SaveDB { get; set; }

        private void BackupBatabase_Click(object sender, RoutedEventArgs e)
        {

            var QUAUA = (from UA in DbVahdat.tblUserAccesses where UA.UserIdRef == PublicVariable.gUserId where UA.SystemPartIdRef == 23 select UA);
            var result2 = QUAUA.ToList(); if (result2.Count == 0) { MessageBox.Show("عدم دسترسی", "اخطار", MessageBoxButton.OK); return; }



            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.FileName = "VahdatSystem" + String.Format("{0:yyyyMMdd}", Convert.ToDateTime(calender.Text)) + "-" + DateTime.Now.ToString("HHmmss"); // Default file name
            dlg.DefaultExt = ".bak";
            dlg.Filter = "Database Backup (.bak)|*.bak";

            Nullable<bool> result = dlg.ShowDialog();

            if (result == true)
            {

                SaveDB = dlg.FileName;


                try
                {

                    var sql = "backup database VahdatSystemDB to disk = {0} with compression";
                    DbVahdat.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, sql, SaveDB);


                    MessageBox.Show($"نسخه پشتیبان دیتابیس " + "\n" +
                    "با موفقیت تهیه شد",
                    $"نسخه پشتیبان دیتابیس",
                    MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);


                }
                catch (Exception ex)
                {

                    MessageBox.Show("هنگام تهیه نسخه پشتیبان اطلاعات در دیتابیس مشکلی بوجود آماده لطفاً دوباره سعی کنید" + ex.ToString(), "خطای ارتباطی");
                }
                finally
                {

                }
            }

        }

 

از کاربر (اگه دسترسی بکاپ گیری داشته باشه ) مسیر میگیره و بکاپ رو ذخیره میکنه
اگه اخطار بده بهش پیغام خطا میده

ویرایش شده در چهارشنبه 17 دی 1399 ساعت 08:59:53
به این پاسخ امتیاز بدهید    5
امتیاز: 289 رتبه: 5
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود