6

バックアップ

string connectionString1 = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Database1;Integrated Security=True; User Instance=True");
            SqlConnection cn = new SqlConnection(connectionString1);
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;
            cmd.CommandText = @"BACKUP DATABASE Database1 TO DISK = 'C:\SRI2Works.bak'";

            cmd.CommandType = CommandType.Text;
            cmd.Connection = cn;
            reader = cmd.ExecuteReader();
            cn.Close();
            MessageBox.Show("Database Backup Successfull.");

戻す

string connectionString1 = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Database1;Integrated Security=True; User Instance=True");
            SqlConnection cn = new SqlConnection(connectionString1);
            cn.Open();

            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;
            cmd.CommandText = @"use master; RESTORE DATABASE Database1 FROM DISK = 'C:\SRI2Works.bak'";
            cmd.CommandText = "DBCC CHECKDB ('Database1')";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = cn;
            reader = cmd.ExecuteReader();
            cn.Close();
            MessageBox.Show("Database Restored Successfull.");

このコードは正常に実行されますが、変更はありません。

4

4 に答える 4

7

データベースの復元で次のコードを試してください。

    private void restoreButton_Click(object sender, EventArgs e)
    {
    string database = con.Database.ToString();
    if (con.State != ConnectionState.Open)
    {
        con.Open();
    }
    try
    {
        string sqlStmt2 = string.Format("ALTER DATABASE [" + database + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
        SqlCommand bu2 = new SqlCommand(sqlStmt2, con);
        bu2.ExecuteNonQuery();

        string sqlStmt3 = "USE MASTER RESTORE DATABASE [" + database + "] FROM DISK='" + textBox2.Text + "'WITH REPLACE;";
        SqlCommand bu3 = new SqlCommand(sqlStmt3, con);
        bu3.ExecuteNonQuery();

        string sqlStmt4 = string.Format("ALTER DATABASE [" + database + "] SET MULTI_USER");
        SqlCommand bu4 = new SqlCommand(sqlStmt4, con);
        bu4.ExecuteNonQuery();

        MessageBox.Show("database restoration done successefully");
        con.Close();

   }
   catch (Exception ex)
   {
        MessageBox.Show(ex.ToString());
   }
}

詳細については、次のチュートリアルをご覧ください: C# を使用した SQL Server データベースのバックアップと復元

于 2016-03-13T19:15:10.193 に答える
0

コードから次のステートメントを削除します。

cmd.CommandText = "DBCC CHECKDB ('Database1')";

また、既存のデータベースを上書きする場合は、commandtext に次のコマンドを使用します。

cmd.CommandText = @"use master; RESTORE DATABASE Database1 FROM DISK = 'C:\SRI2Works.bak' WITH REPLACE";
于 2013-10-23T10:09:36.553 に答える
0
RESTORE DATABASE [C] FROM DISK = 'D:\\Inventory.bak' WITH RECOVERY, 
MOVE 'Inventory_Data'
 TO 'C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data\\c_Data.MDF', 
MOVE 'Inventory_Log' 
TO 
'C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data\\c_Log.LDF', 
REPLACE, stats =1

あなたが気にしなければならない唯一のことは、データベースの復元がMS SQL SERVERで作成されていないことです。私の場合、クエリの実行後、名前で新しいデータベースを[C]作成し、そのファイルを次のパスに作成する必要があります[C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data\\]

于 2016-09-28T18:20:07.357 に答える