PDA

View Full Version : Restore Database *.bak files to SQL Server



popo69
شنبه 06 مهر 1392, 15:26 عصر
برای بازگردانی نسخه پشتیبان دیتابیس SQL از طریق کدنویسی ( به زبان سی شارپ ) :


public Boolean BackUpRestoreDatabase(string DatabaseFullPath, string backUpPath, System.Windows.Forms.ProgressBar progress1)
{
progress1.Value = 0;
Boolean Doit = false;
using (SqlConnection con = new SqlConnection(ConnectionString))
{
try
{

con.Open();

string UseMaster = "USE master";
SqlCommand UseMasterCommand = new SqlCommand(UseMaster, con);
UseMasterCommand.ExecuteNonQuery();

progress1.Value += 25;

string Alter1 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, con);
Alter1Cmd.ExecuteNonQuery();

progress1.Value += 25;

//string Restore = @"BACKUP DATABASE [" + DatabaseFullPath + "] TO DISK = N'" + backUpPath + @"' WITH NOFORMAT, NOINIT, NAME = N'" + DatabaseFullPath + "-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
//SqlCommand RestoreCmd = new SqlCommand(Restore, con);
//RestoreCmd.ExecuteNonQuery();

string Restore = @"RESTORE DATABASE [" + DatabaseFullPath + "] FROM DISK = N'" + backUpPath + @"' WITH REPLACE";
SqlCommand RestoreCmd = new SqlCommand(Restore, con);
RestoreCmd.ExecuteNonQuery();

progress1.Value += 25;

string Alter2 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
Alter2Cmd.ExecuteNonQuery();

Doit = true;
progress1.Value += 25;

//labelReport.Text = "Successful";
}
catch (Exception ex)
{
Doit = false;
string Alter2 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
Alter2Cmd.ExecuteNonQuery();
}

}

return Doit;
}


سوالی داشتید در خدمتم

samad1987
شنبه 06 مهر 1392, 22:34 عصر
والا اینهمه کد نیاز نداره !!!
در اینجا ادرس کامل فایله strFileName



private void Restore(string strFileName)
{
try
{

SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;Connect Timeout=10;User Instance=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
string query = "ALTER DATABASE ["+dbname+"] SET OFFLINE with ROLLBACK IMMEDIATE RESTORE DATABASE ["+dbname+"] FROM DISK = '" + strFileName + "'" + " WITH REPLACE";
cmd.Connection = new SqlConnection("Data Source=.\\sqlexpress;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
MessageBox.Show("نسخه پشتيبان به طور كامل بازيابي شد ", "پيام", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("اشكال در اتصال به بانك اطلاعات", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}