简体   繁体   English

如何在c#.net中备份和还原

[英]How to backup and restore in c#.net

I developed a windows C# .net application and I use Sqlserver database. 我开发了Windows C#.net应用程序,并使用Sqlserver数据库。 I created database in a special user named admin . 我在一个名为admin的特殊用户中创建了数据库。 And now I want to backup and restore database. 现在,我想备份和还原数据库。

So I am successful in backing up but I get error while restoring 所以我备份成功,但是恢复时出错

 private void pictureBox6_Click(object sender, EventArgs e)
        {
            try
            {
                SaveFileDialog f = new SaveFileDialog();
                f.InitialDirectory = "D:\\";
                f.Title = "HoghooghDastmozdBackup";
                f.FileName = "HoghooghDastmozdBackup";
                f.FilterIndex = 1;
                f.OverwritePrompt = true;
                f.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
                if (f.ShowDialog() == DialogResult.OK)
                {
                    SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=HoghooghDastmozd;Persist Security Info=True;User ID=admin;password=123456admin");
                    //   SqlCommand sqlcmd = new SqlCommand("BACKUP DATABASE HoghooghDastmozd TO  DISK =@n", sqlconn);
                    SqlCommand sqlcmd = new SqlCommand("BACKUP DATABASE [HoghooghDastmozd] TO  DISK = @n WITH NOFORMAT, NOINIT,  NAME = N'HoghooghDastmozd-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10",sqlconn);
                    sqlcmd.Parameters.AddWithValue("@n", f.FileName);
                    sqlconn.Open();
                    sqlcmd.ExecuteNonQuery();
                    sqlconn.Close();
                    MessageBox.Show("عملیات پشتیبانی موفق بود");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }


 private void pictureBox5_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog f = new OpenFileDialog();
                f.InitialDirectory = "D:\\";
                f.Title = "HoghooghDastmozdBackup";
                f.FileName = "HoghooghDastmozdBackup";
                f.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
                if (f.ShowDialog() == DialogResult.OK)
                {
                    SqlConnection sqlconn = new SqlConnection("");
                    SqlCommand sqlcmd = new SqlCommand("ALTER DATABASE HoghooghDastmozd  SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master   " + "RESTORE DATABASE [HoghooghDastmozd] FROM  DISK = @n WITH REPLACE ", sqlconn);
                    sqlcmd.Parameters.AddWithValue("@n", f.FileName);
                    sqlconn.Open();
                    sqlcmd.ExecuteNonQuery();
                    sqlconn.Close();
                    MessageBox.Show("عملیات بازیابی موفق بود");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Error Image: 错误图片: 错误图片

I have granted these permission but not work: 我已授予这些权限,但无法正常工作:

EXEC sp_addrolemember 'db_ddladmin', mobtaker;
EXEC sp_addrolemember 'db_datareader', mobtaker;
EXEC sp_addrolemember 'db_datawriter', mobtaker;
EXEC sp_addrolemember 'db_owner', mobtaker;
EXEC sp_addrolemember 'dbcreator', mobtaker;
EXEC sp_addrolemember 'sysadmin', mobtaker;

The simplest way to make sure you have the correct permissions is to make a new blank database (you will be an owner automatically) and then restore your BAK over it. 确保您具有正确权限的最简单方法是创建一个新的空白数据库(您将自动成为所有者),然后在该数据库上还原BAK。 This page tells you how... 页面告诉您如何...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM