نمایش نتایج 1 تا 8 از 8

نام تاپیک: کمک در کد ریستور این برنامه

  1. #1

    کمک در کد ریستور این برنامه

    با سلام دوستان من کد بکاپ و ریستوری رو نوشتم قسمت بکاپ بخوبی کار میکنه ولی قسمت ریستور دکمه ریستور رو میزنم عملیات کامل نمیشه ممنون میشم کمکی کنین
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.IO;

    namespace MyAzmoon
    {
    public partial class FrmBackupandRestor : Form
    {
    SqlConnection con = new SqlConnection("server=.\\AYHAN;DataBase=Zamin;Inte grated Security=True;Asynchronous Processing=true");
    SqlCommand cmd;
    bool flag = false;

    public FrmBackupandRestor()
    {
    InitializeComponent();
    }

    private void إBtnSelectPath_Click(object sender, EventArgs e)
    {
    if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
    if (folderBrowserDialog1.SelectedPath.Substring(0, 1) == "C")
    MessageBox.Show("بهتر است مسیری غیر از درایو/n" + "C/n" + "را برای فایل پشتیبان انتخاب نمایید");
    if (folderBrowserDialog1.SelectedPath.Length > 350)
    MessageBox.Show("مسیری که انتخال کردید بیش از 350 کارکتر میباشد");
    else
    {
    TxtSelectPath.Text = folderBrowserDialog1.SelectedPath;
    }
    }
    }

    private void BtnBackup_Click(object sender, EventArgs e)
    {
    if (string.IsNullOrWhiteSpace(TxtSelectPath.Text))
    errorProvider1.SetError(TxtSelectPath, "جای خالی را پر کنید");
    else if (string.IsNullOrWhiteSpace(TxtBackupName.Text))
    errorProvider1.SetError(TxtBackupName, "وارد کنید");
    else if (File.Exists(TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak"))
    MessageBox.Show("در مسیر انتخاب شده قبلا یک فایل با همین نام ذخیره شده است");
    else
    {
    flag = true;
    GrpSelct.Enabled = false;
    BtnBackup.Enabled = false;
    cmd = new SqlCommand("MyBackup", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@path", TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak");
    con.Open();
    AsyncCallback CallBackDeletgate = HandleCallBack;

    cmd.BeginExecuteNonQuery(CallBackDeletgate, cmd);
    }

    }
    //
    private void HandleCallBack(IAsyncResult result)
    {
    try
    {
    cmd = (SqlCommand)result.AsyncState;
    cmd.EndExecuteNonQuery(result);
    MessageBox.Show("پشتیبانگیری انجام شد");
    }
    catch (Exception ex)
    {
    MessageBox.Show("متوقف شد");
    }
    con.Close();
    flag = false;
    this.BeginInvoke((MethodInvoker)delegate()
    {
    BtnBackup.Enabled = true;
    GrpSelct.Enabled = true;
    });
    }
    private void BtnCancel_Click(object sender, EventArgs e)
    {
    cmd.Cancel();
    }

    private void RdbBackup_CheckedChanged(object sender, EventArgs e)
    {
    GrpBackup.Enabled = true;
    GrpRestore.Enabled = false;

    }

    private void Rdbrestore_CheckedChanged(object sender, EventArgs e)
    {
    GrpBackup.Enabled = false;
    GrpRestore.Enabled = true;


    }

    private void FrmBackupandRestor_FormClosing(object sender, FormClosingEventArgs e)
    {
    if(RdbBackup.Checked==true) {
    if (flag == true)
    {
    e.Cancel = true;
    MessageBox.Show("لطفا ابتدا عملیات را متوقف کنید سپس اقدام به خروج نمایید");

    }
    }


    else if(Rdbrestore.Checked==true)
    {
    if(flag==true)
    e.Cancel = false;
    MessageBox.Show(".شما در حال بازیابی اطلاعات میباشداکیدا توصیه میکنیم تا پایان عملیات پروژه را نبندین");
    }}

    private void BtnSelectBackup_Click(object sender, EventArgs e)
    {
    openFileDialog1.Filter = "(*.bak)|*.bak";
    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    TxtSelectBackup.Text = openFileDialog1.FileName;
    }

    private void BtnRestore_Click(object sender, EventArgs e)
    {
    if (string.IsNullOrWhiteSpace(TxtSelectBackup.Text))
    errorProvider1.SetError(TxtSelectBackup, "فایل پشتیبان انتخاب کنید");
    else
    {
    flag = true;
    GrpSelct.Enabled = false;
    BtnRestore.Enabled = false;
    if (backgroundWorker1.IsBusy)
    {
    backgroundWorker1.RunWorkerAsync();

    }
    }
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    cmd = new SqlCommand("MyRestore", con);

    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@pathfile", TxtSelectBackup.Text.Trim());
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if (e.Error == null)
    {
    MessageBox.Show(".عملیات با موفقیت انجام شد. برنامه بعد از این پیغام ریستارت خواهد شد");
    Application.Restart();
    }
    else
    {
    MessageBox.Show("در بازیابی اطلاعات خطایی رخ داده است");
    flag = false;
    }
    }
    }
    }

  2. #2
    کاربر دائمی آواتار majjjj
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    شیراز
    پست
    1,158

    نقل قول: کمک در کد ریستور این برنامه

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

  3. #3
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: کمک در کد ریستور این برنامه

    شما کد SQL رو بزار
    اما من یه کد SQL بهت میدم.

    alter database MyDB set offline with rollback immediate
    restore database MyDB from disk=@path with replace
    alter database MyDB set online
    حدس من اینه که شما هم تقریبا عین این کد رو نوشتی
    حتما از Stored Procedure هم استفاده کردی
    چک کن که پارامتر path رو nvarchar تعریف کرده باشی و MAX هم نباشه، محدودش کن.
    اگه نشد
    کد اس کیو ال رو هم بزار...

  4. #4

    نقل قول: کمک در کد ریستور این برنامه

    نقل قول نوشته شده توسط Mofid.m مشاهده تاپیک
    شما کد SQL رو بزار
    اما من یه کد SQL بهت میدم.

    alter database MyDB set offline with rollback immediate
    restore database MyDB from disk=@path with replace
    alter database MyDB set online

    حدس من اینه که شما هم تقریبا عین این کد رو نوشتی
    حتما از Stored Procedure هم استفاده کردی
    چک کن که پارامتر path رو nvarchar تعریف کرده باشی و MAX هم نباشه، محدودش کن.
    اگه نشد
    کد اس کیو ال رو هم بزار...
    کد مهندس همونجوریه اگه خواستین برنامه رو اپلود کنم

    USE [zamin]
    GO
    /****** Object: StoredProcedure [dbo].[MyRestore] Script Date: 3/1/2015 10:42:49 PM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER proc [dbo].[MyRestore]
    @pathfile nvarchar(400)
    as
    alter database zamin set offline with rollback immediate
    restore database zamin from disk=@pathfile with replace
    alter database zamin set online

  5. #5
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: کمک در کد ریستور این برنامه

    شما بیا یبار توی کد برنامه اونجایی که

    if (backgroundWorker1.IsBusy)
    {
    backgroundWorker1.RunWorkerAsync();

    }


    بنویس

    if (!backgroundWorker1.IsBusy)
    {
    backgroundWorker1.RunWorkerAsync();

    }

  6. #6
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: کمک در کد ریستور این برنامه

    یعنی بیا تابع RunWorkerAsync رو زمانی اجرا کن که مشغول نبود
    شما هیچوقت تو برنامت بک گراند ورکر مشغول نمیشه.
    یعنی میتونستی چک نکنی
    اما حالا که داری چک میکنی زمانی اون تابع رو اجرا کن که مشغول انجام کاری نباشه.

  7. #7
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: کمک در کد ریستور این برنامه

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

  8. #8

    نقل قول: کمک در کد ریستور این برنامه

    من برای ریستور کردن به این مشکل برخوردم لطفا راهنمایی کنید
    عکس های ضمیمه عکس های ضمیمه

تاپیک های مشابه

  1. کمک در مورد ساخت این برنامه
    نوشته شده توسط G3n3Rall در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: چهارشنبه 13 مهر 1390, 21:03 عصر
  2. کمک در رفع مشکل این برنامه خیلی فوری
    نوشته شده توسط reyra2005 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 1
    آخرین پست: شنبه 14 خرداد 1390, 11:29 صبح
  3. سوال: کمک در کد جستجوی این برنامه
    نوشته شده توسط mvb_mehran در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: سه شنبه 10 خرداد 1390, 02:56 صبح
  4. کمک در مورد ساخت این برنامه
    نوشته شده توسط baradar در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 15
    آخرین پست: شنبه 25 اردیبهشت 1389, 17:34 عصر
  5. سوال: کمک در خصوص خروجی این برنامه کوچک
    نوشته شده توسط sahel65 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 3
    آخرین پست: چهارشنبه 20 خرداد 1388, 14:34 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •