فناوری اطلاعات

.فعالیت این وبلاگ در زمینه برنامه نویسی دات نت ،شبکه های کامپیوتری و اخبار فناوری می باشد

فناوری اطلاعات

.فعالیت این وبلاگ در زمینه برنامه نویسی دات نت ،شبکه های کامپیوتری و اخبار فناوری می باشد

آخرین نظرات
  • ۲۶ تیر ۰۰، ۱۶:۰۱ - آلپ صنعت
    عالیه

بکاپ و ریستور پایگاه داده sql با سی شارپ

سید محسن علوی | سه شنبه, ۲۴ بهمن ۱۳۹۱، ۰۲:۳۱ ب.ظ

برای گرفتن نسخه پشتیبان (Back Up) از بانک اطلاعاتی SQL و بازگرداندن (Restore) نسخه پشتیبان در برنامه C# از کدهای زیر می توان استفاده کرد :

برای این منظور دو متد به نام های Backup و Restore تعریف میکنیم که کدها به شرح ذیر می باشد :

 

متد اول تهیه نسخه پشتیبان :

 

 

 private void Backup(string filename)

        {

            try

            {

                string command = @"Backup DataBase DBName To Disk='" + filename + "'";

                this.Cursor = Cursors.WaitCursor;

                SqlCommand ocommand = null;

                SqlConnection oconnection = null;

                oconnection = new SqlConnection("Data Source=(local);Initial Catalog=DBName ;user id=sa");

                if (oconnection.State != ConnectionState.Open)

                    oconnection.Open();

                ocommand = new SqlCommand(command, oconnection);

                ocommand.ExecuteNonQuery();

                this.Cursor = Cursors.Default;

                MessageBox.Show("تهیه نسخه پشتیبان از اطلا عات با موفقیت انجام شد");

            }

            catch (Exception ex)

            {

                MessageBox.Show("Error : ", ex.Message);

            }

        }

 

 


متد دیگر بازگرداندن پشتیبان :

 

 

private void Restore(string filename)

        {

            try

            {

                string command = @"ALTER DATABASE DBName  SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE master " + " RESTORE DATABASE DBName FROM DISK= N'" + filename + "' WITH REPLACE";

                //string command = @"RESTORE DATABASE  DBName FROM DISK ='" + filename + "' ";

                this.Cursor = Cursors.WaitCursor;

                SqlCommand ocommand = null;

                SqlConnection oconnection = null;

                oconnection = new SqlConnection("Data Source=(local);Initial Catalog=DBName ;user id=sa");

                if (oconnection.State != ConnectionState.Open)

                    oconnection.Open();

                ocommand = new SqlCommand(command, oconnection);

                ocommand.ExecuteNonQuery();

                this.Cursor = Cursors.Default;

                MessageBox.Show("بازیابی اطلاعات از  نسخه پشتیبان از  با موفقیت انجام شد");

            }

            catch (Exception ex)

            {

                MessageBox.Show("Error : ", ex.Message);

            }

        }

برای اینکه مطمئن شویم از اینکه به بانک ارتباطی نداریم از دستور use master استفاده کرده ایم و بعد از بررسی عمل بازگردانی انجام می شود.

 

 


بعد این دو متد به سراغ دکمه هایی برای تهیه پشتیبان و بازگردانی میرویم که به شرح ذیر می باشد :

 

 

private void BackUpBtn_Click(object sender, EventArgs e)

        {

            string filename = string.Empty;

            SaveBackUp.OverwritePrompt = true;

            SaveBackUp.DefaultExt = "";

            SaveBackUp.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";

            SaveBackUp.FilterIndex = 1;

           string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Substring(0, 10);//بر اساس تاریخ شمسی ذخیره می کند

            SaveBackUp.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" +   DateTime.Now.Second.ToString();

            SaveBackUp.Title = "Backup SQL File";

            if (SaveBackUp.ShowDialog() == DialogResult.OK)

            {

                filename = SaveBackUp.FileName;

                Backup(filename);

            }

        }

 

 


 

private void RestoreBtn_Click(object sender, EventArgs e)

        {

            string filename = string.Empty;

            OpenBackUp.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";

            OpenBackUp.FilterIndex = 1;

            OpenBackUp.Filter = @"SQL Backup Files (*.*)|";

 

            string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Substring(0, 10);

            OpenBackUp.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();

            if (OpenBackUp.ShowDialog() == DialogResult.OK)

            {

                filename = OpenBackUp.FileName;

                Restore(filename);

            }

        }

دانلود برنامه فوق با C#.Net 2010

دانلود FarsiLibrary

 

نظرات  (۴۱)

دوست عزیز ممنون از راهنماییتون.فقط یه مشکل دیگه هست اونم اینکه این کد فقط برای ذخیره در Desktop امکان داره و وقتی که میخوام اونو توی یه درایو ذخیره کنم مشکل داره و ارور میده.لطفا در این مورد هم راهنمایی کنین ممنون 

پاسخ:
با سلام
نباید برای ذخیره سازی تو درایو به مشکلی بخورید کلا اگر هم مشکلی باشه باید برای ذخیره داخل درایو ویندوز باشه اتفاقا.
معمولا گاهی ویندوز یکسری خطا ها میده برای این موضوع که بهتره داخل یکی از درایو ها یک پوشه درست کنید و داخل اون پوشه ذخیره کنید فایل بک آپ رو.
این مشکل رو خیلی وقتا با خود بک آپ مستقیم از SQL داشتم و اینطوری رفع شده برام بیشتر هم بخاطر سطوح دسترسی کاربر می باشد این خطا رو نمایش میده بهتون.

سلام و خسته نباشید

من کد های Backup گیری و Restore رو طبق متنی که قرار دادین کپی کردم و قرار دادم فقط مشکلی که هست اینه که farsilibrary رو که میخوام به پروژه م اضافه کنم ارور میده و قبول نمیکنه.از 3 تا فایلی که برای دانلود قرار دادین فقط یکی رو میتونم به برنامه اضافه کنم و بقیه ارور میده.میشه لطفا روش اضافه کردن و کاری که لازم هست رو هم بفرمایین که بدونم ایراد کار من از کجاست 
من از visioal studio 2013 و sql server 2014  استفاده میکنم برای پروژه م 
ممنون از راهنماییتون 

پاسخ:
سلام
شماباید فایل ها رو به قسمت References  اضافه کنید.یا هم بخواید میتونید اضافه نکنید و یک نام فایل بجاش قرار بدید.
بجای این خط :
OpenBackUp.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();
میتونید اینطوری بنویسید :
OpenBackUp.FileName = "BackUpName" + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();
OpenBackUp.FileName = "BackUpName";
فایل ها هم مشکلی نداره و میشه اضافه کرد به پروژه تست شده فایل ها مجدد.

سلام مشکل کد زیر چیست؟

دیتابیس تحت شبکه می باشد

SqlConnection con = new SqlConnection( @"Data Source = 192.168.1.100,49190; Network Library = DBMSSOCN; initial catalog = MYDATABASE; user id = USERNAME; password=PASSWORD;MultipleActiveResultSets=True")

 

 

پاسخ:
سلام باید خطایی رو که بهتون نشون میده رو بهم بدید.
ولی من برای ارتباطات درون شبکه (و حتی خارج از شبکه ) با کد زیر وارد شدم :
SqlConnection con = new SqlConnection("Data Source=91.98.1.1,3321;Initial Catalog=DB_Name;user id=UserSQL;password='P@ssw0rd'");
از کد زیر هم میشه استفاده کرد.
SqlConnection con = new SqlConnection("Data Source=91.98.1.1,3321;Network Library=DBMSSOCN;Initial Catalog=DB_Name;User ID=UserSQL;Password='P@ssw0rd'")

سلام

من یک برنامه دارم که ابتدا با فرم لاگین شروع میشه و یوزر ها و رمز ورود آنها رو از دیتابیس میخونه و با رمز وارد شده چک میکنه.

حالا مشکل اینجاست که با وجود اینکه قبل از انجام Restore دیتابیس رو به حالت SINGLE_USER در میارم ولی این کار انجام نمیشه و ارور زیر رو میده:

Msg 3102, Level 16, State 1, Line 1
RESTORE cannot process database "DBName" because it is in use by this session. It is recommended that the master database be used when performing this operation

Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally
پاسخ:
سلام
دوست عزیز شما نام بانک اطلاعاتی رو آیا تغییر دادید؟چون در خطا اشاره به DBName داره که این قسمت باید نام بانک اطلاعاتی شما باشه نه این کلمه.

سلام روزتون بخیر میشه بگید آدرس محلی که باید فایل رو  ذخیره کنه کجا و چطوری وارد کنم؟
پاسخ:
در کد ها همانطور که نوشته شده شما از File Save استفاده میکنید و میتونید آدرس هر جایی رو بهش بدید.
که در کد ها با نام SaveBackUp ذکر شده است.و برای باز کردن فایل هم OpenBackUp آمده است.
سلام موقع بازیابی پایگاه داده چه توی خود sql چه از طریق سی شارپ این خطا رو میده
TITLE: Microsoft SQL Server Management Studio

System.Data.SqlClient.SqlError: The tail of the log for the database "darvishy89" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log. (Microsoft.SqlServer.Smo)

پاسخ:
سلام
دستوری که برای ریستور استفاده میکنید همین که رو وبلاگ هسته ؟یا یک دستور دیگه است میزنید؟
استفاده از دستور WITH REPLACE آخر دستورات که اضافه کردم هم باید باشه برای بانک های اصلاعاتی ورژن بالاتر از 2008 و من تست کردم درست بوده.
درود بر شما
من اگر بخواهم بکاپ گیری انجام دهم دستورم رو با 
Use book
شروع می کنم نام پایگاهم book هستش
کاری به بکاو ندارم درست کار می کنه
اما اگر به همین روش
Use book restore ... 
بخواهم بازگردانی را انجام دهم به من اخطار کی دهد
می خواستم بدونم برای restore حتما باید از پایگاه master استفاده کرد
اگر بخواهم از پایگاه داده ی خودم use book استفاده کنم باید تنظیمات خاصی را انجام بدهم
ممنون
پاسخ:
درود بر شما

شما باید برای ریستور با استفاده از کدها فقط در قسمت نام DB Name نام بانک را بنویسید و در قسمتی که نوشته Use Master رو دست نزنید.

الآن دیدم .به آیدی یاهو تون مفرستم.
پاسخ:
دوست عزیز اگر به  صورت لوکال وارد اس کیو ال بشید باید از شما پسورد بخواد شما دارید با نام کاربری در ویندوز وارد میشید و اگر بروی سیستم دیگه ببرید نمیتونید وارد بشید مگر اینکه نام سیستم یکی باشه.و در هنگام لوگین کردن به اس کیو ال باید نام سیستم رو هم بنویسید که بشناسه.
لوکال در اس کیو ال نام کاربری sa هستش که حتما پسورد داره اگر به اینصورت نصب کرده باشید.لینک زیر رو مشاهده کنید در مورد مراحل نصب هست

من ایمیل شما را پیدا نمی کنم که براتون بفرستم.
پایگاه من "sql server management studio 2012" هست.منظورتون از نصب چیه؟من به صورت لوکال وارد شدم و پسوردی هم ندادم.همین الان براتون عکس خطا را می فرستم.از کانکشن استرینگ عکس هم مشخص خواهد بود که لوکال وارد شدم.
با تشکر
سلام این کدتون فقط برای زمانیه که برنامه و دیتابیس یکی باشد. من میخوام از دیتابیس وبم توی سیتسم لوکالم سیو کنم نمیشناسه مسیر سیومو لطفا کمکم کنید
پاسخ:
سلام
بانک اطلاعاتی تحت وب فرق میکنه دوست عزیز بروی هاستی که خریداری میکنید عمل ذخیره سازی رو انجام میده براتون نه بروی سیستم لوکال خودتون.
با سلام و تشکر از پاسختان مشکل قبلیم حل شد.ولی یه مشکل دیگه ایجاد شد،خطای زمان اجراست با متن خطای : "Login failed for user sa"  برای رفعش طبق آموزه هایی که از دیگر سایتها بدست آورده بودم کانکش استرینگ را جایگزینش کردم و رفع شد و بکاپ گرفت. ولی موقع ریستور خطای "Cannot open database "KONKUR_AZMAYESHI" requested by the login. The login failed.

Login failed for user 'PCNAME\Dear User'." را می دهد.ممکنه بفرمایید مشکل کجاست?
پاسخ:
بانک اطلاعاتیطون کدوم نسخه SQL هست؟
اگر پسورد داره باید پسورد رو هنگام اتصال بهش بدید.
بهتر بوده به صورت لوکال نصب میکردید SQL رو که انگار اینطوری نصب نکردید شما.(به مشکل میخورید برای جابجایی بانک اطلاعاتی)

برای رفع خطا اگر امکانش هست برنامه رو برام ارسال کنید و یا یک عکس از صفحه ای که خطا میده بگیرید واسم ارسال کنید.
با سلام و تشکر
در پروژه من از دو عبارت "SaveBackUp" و "OpenBackUp"  ایراد می گیره.ممکنه بفرمایید مشکل کجاست.
پایگاه من sql server management هست.
پاسخ:
سلام
دوست عزیز شما باید از ابزار ذخیره و بازکردن فایل استفاده کنید.
یا هم از دستور زیر استفاده کنید در قسمت هایی که این دو دستور را داره :
SaveFileDialog SaveBackUp = new SaveFileDialog();//برای ذخیره سازی

OpenFileDialog OpenBackUp = new OpenFileDialog();//برای باز کردن فایل
خیلی خیلی خیلی ممنون از مطالب عالی که توی سایت گذاشتی.

مرسی خیلی دنبالش بود... منظورم Use master ِ

 سلام دوست عزیز در برنامه من خطا رخ نمی دهد ولی اینsa.ExecuteNonQuery(); نمی گذاره که اجرا بشه
پاسخ:
سلام.
این خطا رو در کدوم قسمت میده موقع تهیه بک آپ یا ریستور کردن؟
اگر موقع بک آپ خطا میده ممکنه بخاطر ارتباط برقرار نکردن با بانک اطلاعاتی باشه که باید SqlConnection را طوری که داری تعریف کنی که درست کار کنه.
به غیر این هستش دقیقا متن خطا رو بهم بده ببینم مشکلش کجاست که ارتباط برقرار نمیکنه.
  • علیرضا دودانگه
  • خیلی فوق الاده بود

    مرسی
    دقیقان درسته کارتون.

    اولین باره که من کارم با سایت خارجی حل نمیشه و تو اینجا چیزی که میخاستم رو پیدا کردم.
    سلام من میخوام یه نرم افزار بنویسم که هم روی کامپیوتر اجرا بشه هم روی لپ تاپ و بتونم از روی بانک اطلاعاتی backup بگیرم و اطلاعات گرفته شده را بر روی لپ تاپ restore کنم مشکلم اینجاست که اگر اطلاعاتی در لپ تاب وچود داشت که در کامپیوتر نبود چیکارکنم اطلاعاتش موقع restore کردن پاک نشه میخوام دو تا بانک اطلاعاتی ها اطلاعات یکسان داشته باشند لطفا راهنمایی کنید خیلی عجله ای هست
    پاسخ:
    سلام
    شما نباید بانک رو ریستور کنید باید بانک جدید رو به ادامه اون متصل کنید مثلا Sync کنید که اگر داده ای جدید بود بهش اضافه کنه.
    عالی بود
    ممنونم

    سلام

    ممنون میشم اگه بگی که ایا این کد چرا در  SQLEXPRESS

    سی شارپ اجرا نمیشه و خطای پیدا نکردن پایگاه را میده.

    کانکشن من اینه.

    Data Source=.\SQLEXPRESS;AttachDbFilename=D:\111emergency\emergency1\emergency.mdf;Integrated Security=True;User Instance=True

    سلام 
    واسه من به farsilibrary گیر میده ...
    تا برسه به بکاپ و ریستور !
    پاسخ:
    سلام
    برای این هستش که شما باید این کتابخانه ها رو به برنامه اضافه کنید.
    این فایل ها رو بری دانلود قرار میدم در این قسمت میتونید دانلود کنید.
    داداش ثواب داره کدهاش بهم بده من برنامه ام به این خاطر مونده
    پاسخ:
    سلام
    کدهاش تو این آدرسه
    عمو جان بازم سلام
    من روی برنامه ام راست کلیک کردم و اد نیو ایتم و سپس دیتابیس رو انتخاب کردم
    سلام عمو
     دستورات سلکت و اینزرت و دلیت و اپدیت رو اجرا میکنه
    بانکم داخل خود ویژوال استدیو 2010 با پسوند.mdf hsj
    پاسخ:
    دوست من این برنامه برای بانک های طراحی شده با خود SQL Server هستش و برای SQL Express متفاوته فکر کنم قبلا گذاشتم کدهاشو داخل همین صفحه.تو بخش نظرات.
    بازم سلام عمو
    اون دوتا خط رو حذف کردم بک اپ میگیرم این خطا رو میگیره
    a network-related or instance -specific error occurred while establishing
    پاسخ:
    سلام
    این پیام مربوط به خطای اتصال به بانک هستش و بهتره برنامه رو خط به خط اجرا کنی و ببینی دقیقا کدوم خط این خطا رو میگیره.
    فکر کنم به بانکت نمیتونه اتصال پیدا کنه.
    از کدوم SQL استفاده میکنی؟
    سلام عمو
    به کد farsilibrary گیر داده؟ چیکارکنم؟
    پاسخ:
    سلام
    شما میتونید فایل کتابخانه رو از اینجا دانلود کنی.
    یا هم کلا اون تیکه کد رو برداری به سلیقه خودت یک رشته بدی بهش یا به میلادی بهش تاریخ بدی.
    سلام،ممنون ازاموزشتون.برای جلوگیری از دستکاری یا حذف فایل پشتیبان چه کار باید کرد؟با اجرای کدهای پشتیبان گیری فایل پشتیبان ایجاد میشود ولی به راحتی میتوان به مسیر فایل مربوط رفت و آنرا حذف و یا ویرایش کرد.در این مورد هم میشه راهنمایی بفرمایید.
    پاسخ:
    سلام
    شما میتونید از کاربر نخواید که مسیری برای ذخیره بهش بده و خودتون تو مسیر مورد نظرتون فایل بک آپ رو ذخیره کنید و برای ریستور کردنش هم از قاعده آخرین و بزرگترین تاریخ استفاده کنید و یا آخرین فایل ایجاد شده رو ریکاور کنه و یاهم ازش مسیر رو بخواید و بگید کدوم فایل رو باز کنه.
    سلام ممنون بابت سایت عالیتون.
    برای بک آپ مشکلی ندارم ولی زمانی که میخوام ریستور کنم به یوزر sa گیر میده باید چیکار کنم؟؟
    پاسخ:
    سلام
    دوست عزیز شما وقتی از برنامه بک آپ تهیه میکنید یک بار برنامه رو ببندید و بعد اجرا کنید و ریستور کنید ببینید باز هم به شما خطا میده یا نه؟؟
    اگر در این موقع به شما خطایی نمایش نده در جایی  که باید اتصال به بانک را قطع کنید این کار و نمیکنید.و بهتره که کدهای بک آپ گیری را یک بار چک کنید.
    و بهتر هم اینه که متن خطایی رو که به شما نشون میده رو برای من بزارید تا بهتر بتونم کمکتون کنم.
        سلام
      private void Restore(string filename)
            {
                try
                {
                    string command = @"ALTER DATABASE h1393 SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE master " + " RESTORE DATABASE h1393 FROM DISK= N'" + filename + "'";
                    //string command = @"RESTORE DATABASE  master FROM DISK ='" + filename + "' ";
                    this.Cursor = Cursors.WaitCursor;
                    SqlCommand ocommand = null;
                    SqlConnection oconnection = null;
                    oconnection = new SqlConnection(@"Data Source=(localdb)\Projects;Initial Catalog=h1393;Integrated Security=True;
                    Connect Timeout=30;Encrypt=False;TrustServerCertificate=False");// بانک جدید را وارد نمایید (master) به جای بانک تعریف شده 
                    if (oconnection.State != ConnectionState.Open)
                        oconnection.Open();
                    ocommand = new SqlCommand(command, oconnection);
                    ocommand.ExecuteNonQuery();
                    this.Cursor = Cursors.Default;
                    MessageBox.Show("بازیابی اطلاعات از  نسخه پشتیبان با موفقیت انجام شد");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error : ", ex.Message);
                }
            }

            private void RestoreBtn_Click(object sender, EventArgs e)
            {
                string filename = string.Empty;
                OpenBackUp.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
                OpenBackUp.FilterIndex = 1;
                OpenBackUp.Filter = @"SQL Backup Files (*.*)|";
                string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Substring(0, 10);
                OpenBackUp.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();
                if (OpenBackUp.ShowDialog() == DialogResult.OK)
                {
                    filename = OpenBackUp.FileName;
                    Restore(filename);
                }
            }
        }
    }
    پاسخ:
    سلام
    oconnection = new SqlConnection(@"Data Source=(localdb)\Projects;Initial Catalog=h1393;Integrated Security=True;
    بشه اینطوری 
    oconnection = new SqlConnection(@"Data Source=(local);Initial Catalog=h1393;Integrated Security=True;
    و اینکه برنامه رو خط به خط اجرا کن ببین دقیقا کجا خطا میده.
    بانک اطلاعاتیت کدوم نسخه از SQL هستش؟
    این کدها بروی Express جواب نمیدن.
  • حسین یزدان پناه
  • با سلام  و تشکر فراوان
    موقع restore پیام خطای زیر را میده :
    ....option 'SINGLE_USER' cannot be set in database "mas
    پاسخ:
    سلام.
    اسم دیتا بیس رو درست ندادی خط اول در ریستور باید به صورت زیر باشه:
     string command = @"ALTER DATABASE DB_Nasr SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE master " + " RESTORE DATABASE DB_Nasr FROM DISK= N'" + filename
    "'";
    بجای DBName نام بانکت رو بنویس و filename هم نام فایلی هستش که داری بازش میکنی برای ریستور کردن.
    اگر خطا داد نمونه کدهات رو کامل قرار بده و بگو از چه بانک اطلاعاتی ای استفاده میکنی.
    با سلام و تشکر از شما
    من موقع backup گیری مشکل ندارم ولی هنگام Restore کردن این پیغام خطا را میده :
    ..... option SINGLE_USER cannot be set database 'mas
    میشه راهنمایی بفرمایید .
    ممنون
    سلام خسته نباشید
    تو متد private void BackUpBtn_Click(object sender, EventArgs e
    به SaveBackUp ایرور میده مشکل چیه؟
    پاسخ:
    سلام
    دوست عزیز این خطا به خاطر اینه که شما باید از SaveFileDialog استفاده کنید که من اسمش رو به SaveBackUp تغییر دادم.قسمت ریکاوری هم باید از OpenDialog استفاده کنید
  • مهرداد قربانیان
  • سلام.من با اون اسمی که گفتید هم امتحان کردم.نشد.میشه راهنمایی کنید ؟
    پاسخ:
    سلام
    شما بهتره برنامه رو خط به خط اجرا کنید و اون خطایی رو که بهتون میده رو واسه من بفرستید از روی خطا بهتر میشه فهمید مشکل کجاست.
  • مهرداد قربانیان
  • سلام.من تازه با وبتون آشنا شدم.خیلی مطالبتون عالیه.ممنون
    من وقتی میخوام بک آپ بگیرم.این خطا را میده :
    Database 'CRM' does not exist. Make sure that the name is entered correctly.
    BACKUP DATABASE is terminating abnormally.
    من از SQL EXPRESS استفاده میکنم تو سی شارپ
    اسم جدولم CRM
    اینم آدرسه دیتا سورسم :
    Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Mehrdad\Documents\CRM.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
    ممنون میشم کمکم کنید.فقط زود ج بدید من عجله دارم
    پاسخ:
    دوست عزیز شما بجای زدن \CRM.mdf بهتره خود CRM رو بنویسی و با این چک کنی پسوند فایل رو بردار ازش
    من اصلا restore رو تست نکردم چون بک آپی نداشتم..
    این خطای رو backup وجود داره..رو کدها اصلا خطا نمی ده...
    اینم کل کدها:
    http://www.rodfile.com/beadqh121ig6
    دیتابیس مورد استفاده:
    Test.mdf

    پاسخ:
    دوست عزیز شما نباید از کلمه Test.mdf استفاده کنید تو کدهاتون فقط کافیه نام بانک رو بنویسید.
    کد شما :
    oconnection = new SqlConnection("Data Source=(local);Initial Catalog=Test.mdf;user id=sa");
    باید به صورت زیر باشه :
    oconnection = new SqlConnection("Data Source=(local);Initial Catalog=Test;user id=sa");
    سلام این خطا رو میده..
    [IMG]http://upload.tehran98.com/upme/uploads/e709064d40f2be8a1.jpg[/IMG]
    http://upload.tehran98.com/upme/uploads/e709064d40f2be8a1.jpg
    پاسخ:
    این خطا رو موقع بک آپ گیری میده یا موقعی که میخوای برنامه رو ریستور کنی؟
    یک بار برنامه رو خط به خط اجرا کن ببین از چه نقطه ای خطا بهت میده.
    دوست عزیز مشکل حل شد.....به آخر کوئری restore یه WITH REPLACE اضافه کردم....و بعد از  ocommand.ExecuteNonQuery(); دستور زیر رو وارد کردم حل شد....
    command.CommandTimeout = 0;

    اینم منبعی که دوستی لطف کرد مشکلش رو مطرح کرد و خودش حل کرد
    http://barnamenevis.org/showthread.php?326929-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%DA%A9%D8%A7%D9%BE-%D9%88-%D8%B1%DB%8C%D8%B3%D8%AA%D9%88%D8%B1-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-sql-%D8%A8%D8%A7-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE
    پاسخ:
    این مشکل رو نداشتم تا به حال من .
    باز هم ممنون بابت منبعی که قرار دادید.
    مرسی از پاسختون...حالا یه اروره خیلی بد بهم داده:

    The tail of the log for the database "university" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
    RESTORE DATABASE is terminating abnormally.
    Changed database context to 'master'.


    پاسخ:
    این خطا داره میگه بانکتون بازه نمیتونه ریستور کنه.
    رو Master دارید ریستور میکنید؟
    گاهی باید بعد اینکه بک آپ میگیرید برنامه رو ببندید و دوباره باز کنید و ریستور کنید اینطوری درست جواب میده ممکنه که ارتباط با بانک بسته نشده باشه و باز بشه ریستور نمیش.
    سلام خسته نباشید .....
    من تو موقع ریستور یه ارور دارم
    ارورم از خط  sql مربوط به altre هست که میگه
    Incorrect syntax near 'ET'.
    Incorrect syntax near 'IMMEDIATE'.
    پاسخ:
    سلام
    ممنونم که بهم گفتی اون خط SET هستش که ET خورده الان کدش رو درست میکنم.
    با تشکر از سایت خوبتون
    من وقتی کد بالا را اجرا می کنم موقع بک اپ گرفتن یه خطایی می ده که می گه دیتابیس وجود ندارد

    پاسخ:
    سلام
    دوست عزیز ممکنه شما SQL رو به صورت Local نصب نکرده باشید و تحت ویندوز نصب کرده باشید که باید بخشی از کد را تغییردهید.
    کد فوق مشکلی نداره بهتره خط به خط برنامه رو اجرا کنید تا ببینید که مشکل از کجاست.

    با سلام عرض دوستان گرامی می خواستم بدونم بک آپ و رستور بانک اطلاعاتی اکسس چگونه است ؟

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

    پاسخ:
    سلام
    برای پشتیبان گیری از اکسس کدهای زیر کارتون رو راه میندازه فکر کنم :
    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.OleDb;
    using System.IO;

    namespace BackUpAccess
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button2_Click(object sender, EventArgs e)
            {
                string PathToRestoreDB = Environment.CurrentDirectory + @"\db.mdb";
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "Text file (*.bk)|*.bk";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    string Filetorestore = ofd.FileName;
                    File.Copy(Filetorestore, PathToRestoreDB, true);
                    progressBar1.PerformStep();
                    MessageBox.Show("پشتیبان با موفقیت بازگردانی شد", "بازگرداندن پشتیبان");
                    progressBar1.PerformStep();
                    progressBar1.Value = 0;
                }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                {
                    string CurrentDatabasePath = Environment.CurrentDirectory + @"\db.mdb";
                    FolderBrowserDialog fbd = new FolderBrowserDialog();

                    if (fbd.ShowDialog() == DialogResult.OK)
                    {
                        string PathtobackUp = fbd.SelectedPath.ToString();
                        File.Copy(CurrentDatabasePath, PathtobackUp + @"\BackUp.bk", true);
                        progressBar1.PerformStep();
                        MessageBox.Show("پشتیبان گیری با موفقیت انجام شد", "ایجاد پشتیبان");
                        progressBar1.Value = 0;
                    }
                }
            }

        }
    }
    موارد لازم دو button ایجاد و با زگردانی و یکprogressBar1 . 
    نکته : db در شاخه bin-debug باشد

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی