0 امتیاز
با عرض سلام و خسته نباشید خدمت استاد عزیز

 

من یک دیتابیس به نام Bsj در نرم افزار sql server 2016 دارم ، میخوام اطلاعات این دیتابیس رو در سی شارپ پشتیبان گیری و باز نشانی کنم ، یه قسمتی از کد نویسی رو انجام دادم ولی کد پشتیبان گیری و باز نشانی رو بلد نیستم .

آدرس دیتابیسم این هست   Data Source=.;Initial Catalog=Bsj;Integrated Security=True

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

1 پاسخ

+1 امتیاز

سلام دوست عزیز

این کد تهیه بک اپ و بازیابی هستش

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

 

namespace BackupRestore
{
    public partial class Form1 : Form
    {

        private string _connectionString = "Data Source=(local);Initial Catalog=DBName ;user id=sa";
        private SqlConnection SqlConnection1 = new SqlConnection();                                 

        public Form1()
        {
            InitializeComponent();
            this.SqlConnection1.ConnectionString = this._connectionString;
        }

private void Backup(string filename)
{
    try
    {
        string command = @"Backup DataBase DBName To Disk='" + filename + "'";
        this.Cursor = Cursors.WaitCursor;                                
        if (SqlConnection1.State != ConnectionState.Open)
        {
            SqlConnection1.Open();
        }
        SqlCommand SqlCommand1 = null;

        SqlCommand1 = new SqlCommand(command, this.SqlConnection1);
        SqlCommand1.ExecuteNonQuery();
        this.Cursor = Cursors.Default;

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

    catch (Exception ex)
    {
        MessageBox.Show("Error : ", ex.Message);
    }
}



///////////////restore

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 + "'";
        this.Cursor = Cursors.WaitCursor;
        SqlCommand SqlCommand1 = null;
                
        if (SqlConnection1.State != ConnectionState.Open)
        {
            SqlConnection1.Open();
        }
        SqlCommand1 = new SqlCommand(command, this.SqlConnection1);
        SqlCommand1.ExecuteNonQuery();
        this.Cursor = Cursors.Default;
        MessageBox.Show("بازیابی اطلاعات از  نسخه پشتیبان از  با موفقیت انجام شد");
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error : ", ex.Message);
    }
}

private void button1_Click(object sender, EventArgs e)
{

    SaveFileDialog saveFileDialog1 = new SaveFileDialog();

    string filename = string.Empty;
    saveFileDialog1.OverwritePrompt = true;
    saveFileDialog1.DefaultExt = "";
    saveFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
    saveFileDialog1.FilterIndex = 1;

    saveFileDialog1.Title = "Backup SQL File";
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        filename = saveFileDialog1.FileName;
        Backup(filename);
    }
}




private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    string filename = string.Empty;
    openFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
    openFileDialog1.FilterIndex = 1;
    openFileDialog1.Filter = @"SQL Backup Files (*.*)|";

    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        filename = openFileDialog1.FileName;
        Restore(filename);
    }
}

 

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

کد ها رو قرار دادم ، ولی قبل از اینکه فرمم لود بشه saveFileDialog باز میشه ، نام فایل رو وارد میکنم و دکمه ذخیره رو میزنم با Error میده ، چه قسمت هایی از کد شمارو باید تغییر بدم ؟ من فقط به جای DBName نام دیتابیس خودم رو قرار دادم که Bsj هست .

از زحماتتون ممنونم استاد .
توسط (128 امتیاز) 1 6

دوست عزیز شما 2تا دیالوک باید بزارید OpenFileDialog-- SaveFileDialog

و اینکه نحوه تایید دیتابیس شما به چه صورت هستش sa یا تاییدیه ویندوزWindows Authentication؟

private string _connectionString = "Data Source=(local);Initial Catalog=DBName ;user id=sa";

 

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

 

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

namespace YourNamespace
    {
   
    public static class DBAccess
        {
      
       
        public static readonly string ConnectionString = @"Data Source=GRIFFPC\SQLEXPRESS;Initial Catalog=AudioMaster;Integrated Security=True";
      

    
       
        public static void BackupDatabase(string backUpFile)
            {
            ServerConnection con = new ServerConnection(@"xxxxx\SQLEXPRESS");
            Server server = new Server(con);
            Backup source = new Backup();
            source.Action = BackupActionType.Database;
            source.Database = "MyDataBaseName";
            BackupDeviceItem destination = new BackupDeviceItem(backUpFile, DeviceType.File);
            source.Devices.Add(destination);
            source.SqlBackup(server);
            con.Disconnect();
            }
       
        public static void RestoreDatabase(string backUpFile)
            {
            ServerConnection con = new ServerConnection(@"xxxxx\SQLEXPRESS");
            Server server = new Server(con);
            Restore destination = new Restore();
            destination.Action = RestoreActionType.Database;
            destination.Database = "MyDataBaseName"; ;
            BackupDeviceItem source = new BackupDeviceItem(backUpFile, DeviceType.File);
            destination.Devices.Add(source);
            destination.ReplaceDatabase = true;
            destination.SqlRestore(server);
            }
       
        }
    }

 

توسط (7,164 امتیاز) 4 7 141
دیالوک ها رو گذاشتم

نحوه تایید دیتابیس من ویندوزی هست .

استاد این Error  رو میده  .'Login failed for user 'sa
توسط (128 امتیاز) 1 6

این قسمت رو حذف کن

خطای لاگین هست

user id=sa";

 

توسط (7,164 امتیاز) 4 7 141

ممنونم استاد ، قسمت پشتیبان گیری درست شد ، فایل پشتیبان میگیره ...

ولی برای بازنشانی Error میده ... Error اینه

cannot open database "Bsj"  requested by th login failed ... همه ی Error رو ننوشته

فک کنم مشکل از این خط باشه

 

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

 

 

توسط (128 امتیاز) 1 6

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

user id=sa; password=;
پسورد رو خالی بزار

 

توسط (7,164 امتیاز) 4 7 141
ممنونم استاد عزیز مشکل رفع شد

یک دنیا ممنون بابت راهنمایی هاتون
توسط (128 امتیاز) 1 6
سلام

وقت بخیر

نرم افزار حسابداری انبارداری دارم

از تکنولوژی LINQ to SQL ل=استفاده میکنم

برای پشتیبان گیری و بازیابی از کدهای شما استفاده کردم

خطای زیر رو دارم

Cannot open backup device 'C:\\Users\\I-Net\\Desktop\\test'. Operating system error 5(Access is denied.).\r\nBACKUP DATABASE is terminating abnormally

راهنمایی نماید

مربوط به پشتیبان گیری  

SqlCommand1.ExecuteNonQuery();

private string _connectionString = "Data Source=(local);Initial Catalog=Anbar_Database;Integrated Security=True";

اگر کد خاصی برای LINQ to SQL میخواهد لطفا برایم بفرستید
توسط (100 امتیاز) 2
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...