View Full Version : بک اپ و رستور
mjt10063
یک شنبه 25 آبان 1393, 18: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, 19:54 عصر
http://technet.microsoft.com/en-us/library/ms186865.aspx
http://technet.microsoft.com/en-us/library/ms186858.aspx
mjt10063
یک شنبه 25 آبان 1393, 20:10 عصر
http://technet.microsoft.com/en-us/library/ms186865.aspx
http://technet.microsoft.com/en-us/library/ms186858.aspx
دوست عزیز ممنون از جوابت
من حقیقتش سمت وب کار میکنم و اصلا ویندوز بلد نیستم
خواستم بگم اگر میشه ساده تر توضیح بدید ممنون میشم
Mr.Csharp
یک شنبه 25 آبان 1393, 22: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, 12:09 عصر
میشه بگید این نیم اسپیس ها رو چطور ایجاد کردی
using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
mjt10063
دوشنبه 26 آبان 1393, 17:21 عصر
دوستان خواهشن کمکم کنید نمیتونم فایل بک آپ شده رو ریستور کنم
خیلی نیاز دارم
Mr.Csharp
دوشنبه 26 آبان 1393, 17:42 عصر
میشه بگید این نیم اسپیس ها رو چطور ایجاد کردی
using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
داخل قسمت add refrence....
رفرنس system.Management رو احتمالا باید اضافه کنید
Mr.Csharp
دوشنبه 26 آبان 1393, 17:57 عصر
داخل قسمت add refrence....
رفرنس system.Management رو احتمالا باید اضافه کنید
ببخشید گیج شدم :)))
این روش بک اپ گیری به روش smo هستش و طبق عکس رفرنس هایی که تو کادر قرار گرفتن رو باید به برنامه اضافه کنین
http://8pic.ir/images/en8f7i0f95jkalc9bam2.jpg
mjt10063
دوشنبه 26 آبان 1393, 18:18 عصر
دوستان کسی کد ریستور نداره برای ما بزاره
اساتید کمک لطفا کل اینترنت رو زیر و رو کردم نتونستم کدی پیدا کنم که مشکل حل بشه
Mr.Csharp
دوشنبه 26 آبان 1393, 18:25 عصر
دوستان کسی کد ریستور نداره برای ما بزاره
اساتید کمک لطفا کل اینترنت رو زیر و رو کردم نتونستم کدی پیدا کنم که مشکل حل بشه
این کدی که گذاشتم دو قسمت داره :متعجب::متعجب: با دقت یه بار دیگه کد ها رو بررسی کنید :خجالت:
فقط کافیه نام بانک رو عوض کنید و مسیر connection string رو عوض کنید :متعجب::متعجب:
mjt10063
دوشنبه 26 آبان 1393, 19: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, 22: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, 11: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, 16:22 عصر
دوستان خواهشن کمک کنید
behnamgholipoor
سه شنبه 27 آبان 1393, 19:49 عصر
دوست عزیز از این connection string استفاده کن و database رو کنار برنامه قرار بده
stringconbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=AttachDbFilen ame=|DataDirectory|\ShafieiNan\mydb.mdf;Integrated Security=True;Connect Timeout=20";
mjt10063
سه شنبه 27 آبان 1393, 20:05 عصر
دوست عزیز من از این خط کانکشن استرینگ هم استفاده کرده بودم
بک آپ میگیره و هیچ مشکلی نسیت
ولی موقع ریستور همون ارور قبلی رو میده
string conbakup = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\mydb.mdf;Integrated Security=True;User Instance=True;Connect Timeout=20";
behnamgholipoor
سه شنبه 27 آبان 1393, 20:18 عصر
نقش این m_save چیه ؟!
سوال اول : چرا برای restore بجای openfiledialog از savefiledialog استفاده شده ؟
سوال دوم : آیا این کدی که گذاشتین backup و restore تو یه button نوشته شده ؟
mjt10063
یک شنبه 02 آذر 1393, 19: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, 11:02 صبح
دوستان کسی نیست کمکم کنه
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.