با سلام میشه یه توضیح در مورد نحوه بک آپ و ریستور کردن رو در entity fm توضیح بدین ؟
با سلام میشه یه توضیح در مورد نحوه بک آپ و ریستور کردن رو در entity fm توضیح بدین ؟
یک نمونه برای جواب سوال شما:
برای بک آپ از این کد استفاده کردم
private void button1_Click(object sender, EventArgs e)
{
#region Select Name
SaveFileDialog saveFileDialog1=new SaveFileDialog();
string strFileName = string.Empty;
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackupFile";
saveFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files (*.*) |*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
Backup(strFileName);
}
#endregion
}
private void Backup(string strFileName)
{
#region Store File Bak
SqlCommand oCommand = null;
SqlConnection oConnection = null;
try
{
string ConectionString =
@"Data Source=.;Initial Catalog=Db_bashgah;Integrated Security=True";
string Command = @"backup database [" + Application.StartupPath + "\\Db_bashgah.mdf] to disk ='" +
strFileName + "' with init,stats=10";
this.Cursor = Cursors.WaitCursor;
oConnection = new SqlConnection(ConectionString);
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);
}
finally
{
oConnection.Close();
oCommand.Parameters.Clear();
oCommand.Dispose();
}
#endregion
}
این ارور رو داد
Untitledddd.png
رشته اتصال به بانک اطلاعاتی رو مجدد برسی کنید.
اگر دیتابیس اتچ هست این کانکشن استرینگ نمیتونه اتصال رو ایجاد کنه.
نام دیتابیس را از کانکشن استرینگ بدست بیارید تا دچار اینگونه خطاها نشوید
string ConectionString = @"Data Source=.;Initial Catalog=Db_bashgah;Integrated Security=True";
oConnection = new SqlConnection(ConectionString);
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
string dbname = oConnection.Database;
string Command = @"backup database [" + dbname + "] to disk =N'" + strFileName + "' with init,stats=10";
دیتا بیس برنامه توی یه مسیر دیگه بجز برنامه هست و به بانک هم اتچ شده و از کامکشن استریگ سی شارپ هم کهآدرس رو میگیرم همینه در ضمن بانک من entity به برنامهه وصلکردم
من از کدهای زیر استفاده میکنم.ایت دو تا متد رو تو کانتکست اضافه کن و استفاده کن.
فقط یک مشکل در مورد ریستور کردن ممکنه پیش بیاد که دلیلش اینه که شما دیتابیستون رو Rename کردین.
برای رفع این مشکل به صورت دستی یه بک آپ از دیتابیس بگیرین. بعد دیتابیس رو حذف کند و بک آپی که گرفتین رو با نام دیتابیس که حذف کردین برگردونید.
دیگه مشکل حل میشه.
موفق باشید
public void GetBackup(string backupFilePath)
{
var conStr = this.Database.Connection.ConnectionString;
conStr = conStr.Replace(this.Database.Connection.Database, "master");
var con = new System.Data.SqlClient.SqlConnection(conStr);
try
{
con.Open();
var cmd = new System.Data.SqlClient.SqlCommand(string.Format(@"B ACKUP DATABASE {0} TO DISK = '{1}' WITH COMPRESSION ", this.Database.Connection.Database, backupFilePath), con);
cmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
con.Close();
}
}
public void RestoreBackup(string backupFilePath)
{
var conStr = this.Database.Connection.ConnectionString;
conStr = conStr.Replace(this.Database.Connection.Database, "master");
var con = new System.Data.SqlClient.SqlConnection(conStr);
try
{
string dbName = this.Database.Connection.Database;
con.Open();
var cmd = new System.Data.SqlClient.SqlCommand(string.Format(@"
ALTER DATABASE {0} SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE {0} SET ONLINE WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE [{0}] FROM DISK = N'{1}' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10", dbName, backupFilePath), con);
cmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
con.Close();
}
}
در حین نصب وضعیت Log on را چی قرار دادید؟این ارور رو داد
Untitledddd.png
Open [Control Panel] -> [Administrative Tools] -> [Services] -> [SQL Server (MSSQLSERVER)] -> [Log on]
Select the [This Account] option
Enter the Login Credentials
Restart the [SQL Server (MSSQLSERVER)] service
از طریق ado بک آپ گرفتم حالا توی ریستور کردن مشکل دارم اینم کدمه
OpenFileDialog openFileDialog1 = new OpenFileDialog();
string strFileName = string.Empty;
openFileDialog1.DefaultExt = "BAK";
openFileDialog1.FileName = "BackupFile";
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
//openFileDialog1.OverwritePrompt = true;
openFileDialog1.Title = "Backup SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = openFileDialog1.FileName;
string qry1;
MessageBox.Show(" در حین عملیات برگرداندن نسخه پشتیبان به چیزی دست نزنید", "هشدار", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
qry1 = " ALTER DATABASE [Db_bashgah] SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE[Db_bashgah] FROM DISK ='"+strFileName+"' WITH FILE = 2, NOUNLOAD, REPLACE, STATS = 5 ALTER DATABASE[Db_bashgah] SET MULTI_USER";
dl.ExcuteNonQuery(qry1);
MessageBox.Show("عملیات برگرداندن نسخه پشتیبان با موفقیت انجام شد", "پیغام", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}