PDA

View Full Version : بک اپ و رستور



mjt10063
یک شنبه 25 آبان 1393, 17:41 عصر
با سلام دوستان
من توسط کد زیر
بک آپ می گیرم و فایل ذخیره میشه
ولی وقتی رستور می کنم بعد از تغییر اطلاعات اطلاعات قبلی جایگزین نمیشه


private void پشتیبانگیریToolStripMenuItem_Click(obje ct sender, EventArgs e)
{
if (MessageBox.Show("آیا مایل به گرفتن فایل پشتیان هستید ؟", "پشتیبان گیری", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackupFile" + pc.GetYear(dt).ToString() + pc.GetMonth(dt).ToString("00") + pc.GetDayOfMonth(dt).ToString("00");
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)
{
this.Refresh();
m_save = "";
m_save = saveFileDialog1.FileName;
string command = @"BACKUP DATABASE [" + Application.StartupPath + @"\mydb.mdf] TO DISK='" + m_save + "'";
//this.Cursor = Cursors.WaitCursor;
if (scon.State == ConnectionState.Closed)
scon.Open();
SqlCommand scm = new SqlCommand(command, scon);
scm.ExecuteNonQuery();
scon.Close();
Application.Exit();
}
else
Application.Exit();
}
else
Application.Exit();
}
private void بازیابیاطلاعاتToolStripMenuItem_Clic k(object sender, EventArgs e)
{
if (MessageBox.Show("آیا مایل به بازیابی اطلاعات هستید هستید ؟", "بازیابی اطلاعات", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.Refresh();
m_save = "";
m_save = openFileDialog1.FileName;
string command = "ALTER DATABASE [" + Application.StartupPath + @"\mydb.mdf] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE [" + Application.StartupPath + @"\mydb.mdf]
FROM DISK ='" + m_save + "'; ALTER DATABASE [" + Application.StartupPath + @"\mydb.mdf] SET MULTI_USER;";
//string command = @”RESTORE DATABASE DBName FROM DISK ='” + filename + “‘ “;
if (scon.State == ConnectionState.Closed)
scon.Open();
SqlCommand scm = new SqlCommand(command, scon);
scm.ExecuteNonQuery();
MessageBox.Show("بازیابی کامل شد ");
}
}
}



ممنون میشم کمکم کنید

j_naroogha@yahoo.com
یک شنبه 25 آبان 1393, 18:54 عصر
http://technet.microsoft.com/en-us/library/ms186865.aspx
http://technet.microsoft.com/en-us/library/ms186858.aspx

mjt10063
یک شنبه 25 آبان 1393, 19:10 عصر
http://technet.microsoft.com/en-us/library/ms186865.aspx
http://technet.microsoft.com/en-us/library/ms186858.aspx

دوست عزیز ممنون از جوابت
من حقیقتش سمت وب کار میکنم و اصلا ویندوز بلد نیستم
خواستم بگم اگر میشه ساده تر توضیح بدید ممنون میشم

Mr.Csharp
یک شنبه 25 آبان 1393, 21:39 عصر
این کد هایی که من استفاده می کنم :

using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;


namespace School
{
class Backup_Restore
{
string conbakup = @"Data Source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\School.mdf;initial catalog=School;integrated security=True;multipleactiveresultsets=True";
string conrestore = @"Data Source=(LocalDB)\v11.0;Integrated Security=True;multipleactiveresultsets=True";


public void Restordb()
{
SqlConnection.ClearAllPools();
using (SqlConnection con = new SqlConnection(conrestore))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
try
{
Restore restoredb = new Restore();
restoredb.Action = RestoreActionType.Database;
restoredb.Database = "Name Database";
OpenFileDialog openfd = new OpenFileDialog();
openfd.Filter = "Backup File (*.Bak)|*.Bak";

Nullable<bool> result = openfd.ShowDialog();
if (result == true)
{
BackupDeviceItem bkpDevice = new BackupDeviceItem(openfd.FileName, DeviceType.File);

restoredb.Devices.Add(bkpDevice);
restoredb.ReplaceDatabase = true;
restoredb.SqlRestore(srvr);

}
}
catch ()
{

}
}
}
}


public void Backupdb()
{
using (SqlConnection con = new SqlConnection(conbakup))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
try
{
Backup backupdb = new Backup();
backupdb.Action = BackupActionType.Database;
backupdb.Database = "Name Database";
SaveFileDialog savefd = new SaveFileDialog();
savefd.Filter = "Backup File (*.Bak)|*.Bak";
savefd.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
Nullable<bool> result = savefd.ShowDialog();
if (result == true)
{
BackupDeviceItem bkpDevice = new BackupDeviceItem(savefd.FileName, DeviceType.File);
backupdb.Devices.Add(bkpDevice);
backupdb.SqlBackup(srvr);

}
}
catch
{

}
}

}
}
}
}

mjt10063
دوشنبه 26 آبان 1393, 11:09 صبح
میشه بگید این نیم اسپیس ها رو چطور ایجاد کردی

using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

mjt10063
دوشنبه 26 آبان 1393, 16:21 عصر
دوستان خواهشن کمکم کنید نمیتونم فایل بک آپ شده رو ریستور کنم
خیلی نیاز دارم

Mr.Csharp
دوشنبه 26 آبان 1393, 16:42 عصر
میشه بگید این نیم اسپیس ها رو چطور ایجاد کردی

using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;




داخل قسمت add refrence....

رفرنس system.Management رو احتمالا باید اضافه کنید

Mr.Csharp
دوشنبه 26 آبان 1393, 16:57 عصر
داخل قسمت add refrence....

رفرنس system.Management رو احتمالا باید اضافه کنید


ببخشید گیج شدم :)))

این روش بک اپ گیری به روش smo هستش و طبق عکس رفرنس هایی که تو کادر قرار گرفتن رو باید به برنامه اضافه کنین

http://8pic.ir/images/en8f7i0f95jkalc9bam2.jpg

mjt10063
دوشنبه 26 آبان 1393, 17:18 عصر
دوستان کسی کد ریستور نداره برای ما بزاره
اساتید کمک لطفا کل اینترنت رو زیر و رو کردم نتونستم کدی پیدا کنم که مشکل حل بشه

Mr.Csharp
دوشنبه 26 آبان 1393, 17:25 عصر
دوستان کسی کد ریستور نداره برای ما بزاره
اساتید کمک لطفا کل اینترنت رو زیر و رو کردم نتونستم کدی پیدا کنم که مشکل حل بشه


این کدی که گذاشتم دو قسمت داره :متعجب::متعجب: با دقت یه بار دیگه کد ها رو بررسی کنید :خجالت:
فقط کافیه نام بانک رو عوض کنید و مسیر connection string رو عوض کنید :متعجب::متعجب:

mjt10063
دوشنبه 26 آبان 1393, 18:52 عصر
دوست عزیز من کد رو اینطوری نوشتم ببیند مشکلش کجاست
با تشکر


string conbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\PCTi rTash\documents\visual studio 2010\Projects\ShafieiNan\ShafieiNan\mydb.mdf;Integ rated Security=True;User Instance=True";

using (SqlConnection con = new SqlConnection(conbakup))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);

if (srvr != null)
{
if (MessageBox.Show("آیا مایل به گرفتن فایل پشتیان هستید ؟", "پشتیبان گیری", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackupFile" + pc.GetYear(dt).ToString() + pc.GetMonth(dt).ToString("00") + pc.GetDayOfMonth(dt).ToString("00");
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)
//try
//{
m_save = "";
m_save = saveFileDialog1.FileName;
Backup backupdb = new Backup();
backupdb.Action = BackupActionType.Database;
backupdb.Database = "mydb";
//SaveFileDialog savefd = new SaveFileDialog();
//savefd.Filter = "Backup File (*.Bak)|*.Bak";
//savefd.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");

BackupDeviceItem bkpDevice = new BackupDeviceItem(m_save, DeviceType.File);
backupdb.Devices.Add(bkpDevice);
backupdb.SqlBackup(srvr);
MessageBox.Show("فایل پشتیبان ایجاد شد");
//}
//catch
//{
// MessageBox.Show("خطا");
//}
}
}
}



اینم خطای برنامه :

125807

behnamgholipoor
دوشنبه 26 آبان 1393, 21:43 عصر
به احتمال زیاد connection string شما مشکل داره
این کد ها رو امتحان کن با connection string خودت
برای Backup

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\db\Linkboxdb.mdf;Integrated Security=True;Connect Timeout=15";
SqlCommand sc = new SqlCommand();
sc.Connection = con;
SqlConnection.ClearAllPools();
con.Open();
string dbName = con.Database;
string backupQuery = @"BACKUP DATABASE [" + dbName + "] TO DISK = N'" + txtBackup.Text + "' WITH NO_COMPRESSION ,CONTINUE_AFTER_ERROR ,FORMAT, INIT, NAME = N'Linkboxdb-Full Database Backup', SKIP,NOREWIND, NOUNLOAD, STATS = 10 ";
sc.CommandText = backupQuery;
sc.ExecuteNonQuery();
con.Close();

برای Restore

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\db\Linkboxdb.mdf;Integrated Security=True;Connect Timeout=15";
SqlCommand sc = new SqlCommand();
sc.Connection = con;
SqlConnection.ClearAllPools();
con.Open();
string dbName = con.Database;
string RestoreQuery = @"USE [master]; RESTORE DATABASE [" + dbName + "] FROM DISK = N'" + txtRestore.Text + "' WITH NOUNLOAD, REPLACE, STATS = 10";
sc.CommandText = RestoreQuery;
sc.ExecuteNonQuery();
con.Close();

mjt10063
سه شنبه 27 آبان 1393, 10:43 صبح
به احتمال زیاد connection string شما مشکل داره
این کد ها رو امتحان کن با connection string خودت


دوست عزیز من کد شما رو نوشتم و در ضمینه بک آپ گیری مشکلی نبود ولی زمان ریستور بازم خطا میداد خواهشن کمکم کنید با تشکر
این کد :


string conbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\PCTi rTash\documents\visual studio 2010\Projects\ShafieiNan\ShafieiNan\mydb.mdf;Integ rated Security=True;User Instance=True";

if (MessageBox.Show("آیا مایل به گرفتن فایل پشتیان هستید ؟", "پشتیبان گیری", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackupFile" + pc.GetYear(dt).ToString() + pc.GetMonth(dt).ToString("00") + pc.GetDayOfMonth(dt).ToString("00");
saveFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files (*.*) |*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Backup SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
m_save = "";
m_save = saveFileDialog1.FileName;
SqlConnection con = new SqlConnection();
con.ConnectionString = conbakup;
SqlCommand sc = new SqlCommand();
sc.Connection = con;
SqlConnection.ClearAllPools();
con.Open();
string dbName = con.Database;
string RestoreQuery = @"USE [master]; RESTORE DATABASE [" + dbName + "] FROM DISK = N'" + m_save + "' WITH NOUNLOAD, REPLACE, STATS = 10";
sc.CommandText = RestoreQuery;
sc.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازیابی کامل شد ");
}
}



اینم خطا

125821

mjt10063
سه شنبه 27 آبان 1393, 15:22 عصر
دوستان خواهشن کمک کنید

behnamgholipoor
سه شنبه 27 آبان 1393, 18:49 عصر
دوست عزیز از این connection string استفاده کن و database رو کنار برنامه قرار بده

stringconbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=AttachDbFilen ame=|DataDirectory|\ShafieiNan\mydb.mdf;Integrated Security=True;Connect Timeout=20";

mjt10063
سه شنبه 27 آبان 1393, 19:05 عصر
دوست عزیز من از این خط کانکشن استرینگ هم استفاده کرده بودم
بک آپ میگیره و هیچ مشکلی نسیت
ولی موقع ریستور همون ارور قبلی رو میده
string conbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\mydb.mdf;Integrated Security=True;User Instance=True;Connect Timeout=20";

behnamgholipoor
سه شنبه 27 آبان 1393, 19:18 عصر
نقش این m_save چیه ؟!
سوال اول : چرا برای restore بجای openfiledialog از savefiledialog استفاده شده ؟
سوال دوم : آیا این کدی که گذاشتین backup و restore تو یه button نوشته شده ؟

mjt10063
یک شنبه 02 آذر 1393, 18:51 عصر
دوست عزیز ببخشید دیر جواب دادم نبودم
کد ها رو ببین
الان بک آپ مشکل نداره و میگیره
اینم کدش

private void پشتیبانگیریToolStripMenuItem_Click(obje ct sender, EventArgs e)
{
if (MessageBox.Show("آیا مایل به گرفتن فایل پشتیان هستید ؟", "پشتیبان گیری", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackupFile" + pc.GetYear(dt).ToString() + pc.GetMonth(dt).ToString("00") + pc.GetDayOfMonth(dt).ToString("00");
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)
{
m_save = "";
m_save = saveFileDialog1.FileName;
SqlConnection con = new SqlConnection();
con.ConnectionString = conbakup;
SqlCommand sc = new SqlCommand();
sc.Connection = con;
SqlConnection.ClearAllPools();
con.Open();
string dbName = con.Database;
string backupQuery = @"BACKUP DATABASE [" + dbName + "] TO DISK = N'" + m_save + "' WITH NO_COMPRESSION ,CONTINUE_AFTER_ERROR ,FORMAT, INIT, NAME = N'Linkboxdb-Full Database Backup', SKIP,NOREWIND, NOUNLOAD, STATS = 10 ";
sc.CommandText = backupQuery;
sc.ExecuteNonQuery();
con.Close();
MessageBox.Show("فایل پشتیبان ایجاد شد");
}
}
}



ولی ریستور کامل نمیشه یعنی کد مشل نداره پیام اخر رو نشون میده ولی اگر تغییری توی دیتابیس ایجاد کنی و بخوای ریستور کنی
تغییرات قبلی اعمال نمیشه
اینک کد ریستور

private void بازیابیاطلاعاتToolStripMenuItem_Clic k(object sender, EventArgs e)
{
if (MessageBox.Show("آیا مایل به گرفتن فایل پشتیان هستید ؟", "پشتیبان گیری", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
m_save = "";
m_save = openFileDialog1.FileName;
SqlConnection con = new SqlConnection();
con.ConnectionString = conbakup;
SqlCommand sc = new SqlCommand();
sc.Connection = con;
SqlConnection.ClearAllPools();
con.Open();
string dbName = con.Database;
string RestoreQuery = @"USE [master]; RESTORE DATABASE [" + dbName + "] FROM DISK = N'" + m_save + "' WITH NOUNLOAD, REPLACE, STATS = 10";
sc.CommandText = RestoreQuery;
sc.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازیابی کامل شد ");
}
}
}


ممنون میشم کمکم کنید باتشکر

mjt10063
دوشنبه 03 آذر 1393, 10:02 صبح
دوستان کسی نیست کمکم کنه