PDA

View Full Version : كد هاي بكاپ گيري و ريستور و اتچ ديتا بيس sql2005 توسط سي شارپ



debugger
یک شنبه 28 تیر 1388, 16:39 عصر
سلام به تمامي دوستان عزيز و گرامي

من يه برنامه با سي شارپ نوشتم كه ديتا بيسش sql2005 هست .

تو سايت هر چقدر جستجو كردم نتونستم كد هاي مربوط به اتچ و بكاپ و ريستور را پيدا كنم

لطفا كد هاي مربوطه را بنويسيد چون تا به حال بكاپ ورنداشتم

Unknownlive
یک شنبه 28 تیر 1388, 16:49 عصر
کاربر محترم همین دیروز یکی از کاربر ها در خواست کرد و یکی یک سورس توپ گذاشت حالا اگه اتچ و دی اتچ را می خواهی بگو تا بگم اما ریستور را نمی دونم !!!

mmramezani2101
یک شنبه 28 تیر 1388, 17:04 عصر
SqlCommand com = new SqlCommand("backup database ChestRenal to disk= "
+ "'" + textBox1.Text.ToString() + "'" , sc);

debugger
یک شنبه 28 تیر 1388, 20:07 عصر
کاربر محترم همین دیروز یکی از کاربر ها در خواست کرد و یکی یک سورس توپ گذاشت حالا اگه اتچ و دی اتچ را می خواهی بگو تا بگم اما ریستور را نمی دونم !!!

اقا سورس توپ داري بزار من هر چقدر جستجو كردم پيدا نكردم شما بكاپ و اتچ و دي اتچ را بزار . ريستور را پيدا مي كنيم

بي نهايت سپاس

debugger
یک شنبه 28 تیر 1388, 20:12 عصر
SqlCommand com = newSqlCommand("backup database ChestRenal to disk= "
+ "'" + textBox1.Text.ToString() + "'" , sc);


اين textbox و sc كارش چيه براي چيه ؟؟؟؟

لطفا سورس كامل بزارين

من يدونه از اينترنت ژيدا كردم خيلي پيچ پيچ نوشته بود.

مثلا اول كانكنت مي شود و بعد ديتا بيس مورد نظر را سلكت مي كرد و بعد بكاپ و ... اين سورس شما را من چطوري استفاده كنم

راستي براي ريستور چي ؟ راه حلي نداري

Reza_Yarahmadi
یک شنبه 28 تیر 1388, 22:01 عصر
این کد رو توی همین سایت پیدا کردم!!

private void Attach_db(string db_Name, string Path_Mdf, string Path_Ldf)
{
try
{
SqlConnection con = new SqlConnection("server=.;trusted_connection=yes;");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "sp_attach_db @dbname = N'" + db_name + "', @filename1 = N'" + Path_Mdf + "', @filename2 = N'" + Path_Ldf + "'";
cmd.CommandType = CommandType.Text;
con.Open();
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception e)
{
MessageBox.Show(e);
}
}

debugger
دوشنبه 29 تیر 1388, 14:43 عصر
این کد اتچ را تست کردم بسیار عالی بود . خیلی خوب جواب داد

لطفا در مورد بکاپ و ریستور هم راهنمایی کنید

mahdi_7610
دوشنبه 29 تیر 1388, 19:21 عصر
این کد اتچ را تست کردم بسیار عالی بود . خیلی خوب جواب داد

لطفا در مورد بکاپ و ریستور هم راهنمایی کنید

من از کدهای زیر استفاده می کنم .




string filename;
private void Backup_Click(object sender, EventArgs e)
{
saveFileDialog1.FileName = "DB_Backup" + PersianDate.Now.Year.ToString() + '-' + PersianDate.Now.Month.ToString() + '-' + PersianDate.Now.Day.ToString() + ".bak";
saveFileDialog1.Filter = "Backup Files (*.bak)|*.bak | All Files (*.*)|*.*";
this.saveFileDialog1.ShowDialog();

if ((this.saveFileDialog1.FileName != ""))
{
filename = saveFileDialog1.FileName.ToString();
}
try
{
con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=ExamA;Integrated Security=True";
cmd.Connection = con;
string t = @"BACKUP DATABASE [ExamA]TO DISK=N'" + filename + "' WITH NOFORMAT,NOINIT,NAME=N'mydb-full Database Backup',SKIP,NOREWIND,NOUNLOAD,STATS=10;";
cmd.CommandText = t;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد");
}
catch
{
MessageBox.Show("پشتیبان گیری با موفقیت انجام نشد");
}
}



private void Restore_Click(object sender, EventArgs e)
{
this.openFileDialog1.ShowDialog();
if ((this.openFileDialog1.FileName != "") && (this.openFileDialog1.FileName != "openFileDialog1"))
{
try
{
filename = openFileDialog1.FileName;
con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=ExamA;Integrated Security=True";
cmd.Connection = con;
con.Open();
cmd.CommandText = "ALTER DATABASE ExamA SET SINGLE_USER WITH ROLLBACK IMMEDIATE" + " USE master; RESTORE DATABASE ExamA FROM DISK =N'" + filename + "'";
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازیابی با موفقیت انجام شد");
}
catch
{
MessageBox.Show("بازیابی با موفقیت انجام نشد");
}
}
}

mahdi_7610
دوشنبه 29 تیر 1388, 19:24 عصر
این کد رو توی همین سایت پیدا کردم!!

private void Attach_db(string db_Name, string Path_Mdf, string Path_Ldf)
{
try
{
SqlConnection con = new SqlConnection("server=.;trusted_connection=yes;");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "sp_attach_db @dbname = N'" + db_name + "', @filename1 = N'" + Path_Mdf + "', @filename2 = N'" + Path_Ldf + "'";
cmd.CommandType = CommandType.Text;
con.Open();
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception e)
{
MessageBox.Show(e);
}
}

من توی Attach کردن مشکل داشتم .

شاید این کد بتونه کمک کنه .

مسیر فایلهای mdf و ldf را چه طور باید قرار بدیم ؟؟

همون مسیری که توی برنامه خودت توی کد گذاشتی را می تونی بزاری اینجا .

ممنون

Reza_Yarahmadi
دوشنبه 29 تیر 1388, 23:18 عصر
مسیر فایلهای mdf و ldf را چه طور باید قرار بدیم ؟؟

همون مسیری که توی برنامه خودت توی کد گذاشتی را می تونی بزاری اینجا .

معمولا روال هم بر این قراره که فایلهای بانک رو توی یه پوشه مشترک با فایلهای برنامه میریزن بعد توی لود برنامه دستورات اتچ رو مینویسن(اگر قبلا اتچ نشده باشه!) برای دسترسی به پوشه برنامه هم میتونی از کد زیر استفاده کنی


System.IO.Path.GetDirectoryName(Application.Execut ablePath)

debugger
سه شنبه 30 تیر 1388, 00:41 صبح
من براي بكاپ از كد زير استفاده مي كنم . كه در اولين اجرا بكاپ ور داشت . ولي ديگه ور نمي داره و اين ارور را ميده


Cannot open database "kdb" requested by the login. The login failed.
Login failed for user 'PROGRAMMER\yashar'.


كد هاي بكاپ




private void button20_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackFile";
saveFileDialog1.Filter = "Create BackUp (*.bak)|*.bak|All file(*.*)|*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
back(strFileName);
}
}




private void back(string strFileName)
{
try

{
string command = @"BACKUP DATABASE kdb TO DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.; initial catalog=kdb ;integrated security=true;");
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 Occurd: " + ex.Message);

textBox26.Text = ex.Message.ToString();
}
}



ك هاي restore هم به اين شكل هست




private void button23_Click(object sender, EventArgs e)
{

string strFileName = string.Empty;
openFileDialog1.FileName = " ";
openFileDialog1.Filter = "Restore BackUp (*.bak)|*.bak|All file(*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restor SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
rest(strFileName);
}
}




private void rest(string strFileName)
{
try

{
string command = "ALTER DATABASE kdb SET SINGLE_USER with ROLLBACK IMMEDIATE " +
"use master " +
" RESTORE DATABASE kdb FROM DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.; initial catalog=kdb ;integrated security=true;");
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 Occurd: " + ex.Message);
}
}


ارور بالا هم ميگه با يوزر programmer نمي تونم لاگين بشم . كه حرف چرتي زده

و يوزر و پس ميخواد كه چون لاين به صورت Windows Authentication هست اين ارور بي معني هست

mmramezani2101
سه شنبه 30 تیر 1388, 09:07 صبح
اين textbox و sc كارش چيه براي چيه ؟؟؟؟

لطفا سورس كامل بزارين

من يدونه از اينترنت ژيدا كردم خيلي پيچ پيچ نوشته بود.

مثلا اول كانكنت مي شود و بعد ديتا بيس مورد نظر را سلكت مي كرد و بعد بكاپ و ... اين سورس شما را من چطوري استفاده كنم

راستي براي ريستور چي ؟ راه حلي نداري

SqlConnection sc = new SqlConnection("Data Source=sama;Initial Catalog=ChestRenal;Integrated Security=True");
sc.Open();
SqlCommand com = new SqlCommand("backup database ChestRenal to disk= "
+ "'" + textBox1.Text.ToString() + "'" , sc);
com.ExecuteNonQuery();
sc.Close();
MessageBox.Show("نسخه پشتيبان تهيه شد.");

mahdi_7610
سه شنبه 30 تیر 1388, 10:16 صبح
من براي بكاپ از كد زير استفاده مي كنم . كه در اولين اجرا بكاپ ور داشت . ولي ديگه ور نمي داره و اين ارور را ميده


Cannot open database "kdb" requested by the login. The login failed.
Login failed for user 'PROGRAMMER\yashar'.


كد هاي بكاپ




privatevoid button20_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackFile";
saveFileDialog1.Filter = "Create BackUp (*.bak)|*.bak|All file(*.*)|*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
back(strFileName);
}
}





privatevoid back(string strFileName)
{
try
{
string command = @"BACKUP DATABASE kdb TO DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source=.; initial catalog=kdb ;integrated security=true;");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = newSqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show("پ¬¢ï ںëï ں êيهçï¢ ںë¤ںê ¬§");
}
catch (Exception ex)
{
//MessageBox.Show("ERROR Occurd: " + ex.Message);
textBox26.Text = ex.Message.ToString();
}
}



ك هاي restore هم به اين شكل هست




privatevoid button23_Click(object sender, EventArgs e)
{


string strFileName = string.Empty;
openFileDialog1.FileName = " ";
openFileDialog1.Filter = "Restore BackUp (*.bak)|*.bak|All file(*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restor SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
rest(strFileName);
}
}





privatevoid rest(string strFileName)
{
try
{
string command = "ALTER DATABASE kdb SET SINGLE_USER with ROLLBACK IMMEDIATE " +
"use master " +
" RESTORE DATABASE kdb FROM DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source=.; initial catalog=kdb ;integrated security=true;");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = newSqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show("پ¬¢ï ںë ں êيهçï¢ ںھ詧ںë§ى ¬§");
}
catch (Exception ex)
{
MessageBox.Show("ERROR Occurd: " + ex.Message);
}
}


ارور بالا هم ميگه با يوزر programmer نمي تونم لاگين بشم . كه حرف چرتي زده



و يوزر و پس ميخواد كه چون لاين به صورت Windows Authentication هست اين ارور بي معني هست



من هم وقتی از این کدها استفاده می کنم بعد از چند بار بکاپ گیری و رستور موفق همون ارور را میده .

مشکل از اینجاست که این دستورات اون دیتابیس را به Single User تغییر میدن .

اگه sql sarver را باز کنید و توی دیتابیس ها به دیتابیس kdb نگاه کنید می بینید که اونا تغییر داده به Single User . و به شما اجازه وارد شدن به اون را نمیده .

به خاطر همین برنامه قادر نیست توی این دیتابیس چیزی بنویسه یا چیزی ازش بخونه .

دلیل این مشکل چیه ؟

mahdi_7610
سه شنبه 30 تیر 1388, 10:43 صبح
فکر کنم مشکل حل شد .

شما هم امتحان کن ببین حل شده .

فقط کافیه بعد از oCommand.ExecuteNonQuery(); کانکشن را ببندید .


oConnection.Close();

__Genius__
سه شنبه 30 تیر 1388, 11:08 صبح
یکی از دوستان لطف کنه یه کد درست بذاره ممنون میشم ، هیچ کدوم برای backup جواب نمیدن ...

debugger
سه شنبه 30 تیر 1388, 16:24 عصر
مشكل اتچ به كل رفع شد

مشكل بكاپ را هم حل كردم

فقط مونده ريستور :

كد هاي بكاپ را اگر به اين شكل بنويسيد هميشه جواب ميده



private void button20_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.AddExtension = true;
saveFileDialog.CheckFileExists = false;
saveFileDialog.CheckPathExists = true;
saveFileDialog.OverwritePrompt = true;
saveFileDialog.FileName = "Backup";
saveFileDialog.Filter = "Backup File (*.Bak)|*.Bak";
saveFileDialog.DefaultExt = "Bak";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.InitialDirectory = "C:\\";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection();
sqlConnection.ConnectionString = "server=(local);database=kdb;integrated security=true;";
sqlConnection.Open();
System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText = "BACKUP DATABASE kdb TO DISK = @Destination";
sqlCommand.Parameters.Add("@Destination", SqlDbType.VarChar);
sqlCommand.Parameters["@Destination"].Value = saveFileDialog.FileName;
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
}

با اين كد ها موفق به گرفتن بكاپ شدم . هميشه هم جواب ميده

ولي ريستور هنوز مشكل هست ( يه كد هايي پيدا كردم كه با يه متد ديگه اي به غير كد هايي كه تا حالا نوشته شده ، دارم تغييراتي روش اعمال مي كنم كه بشه تو پرو‍‍ژه ها ازش استفاده كرد . اگر جواب گرفتم كد ها را همينجا ميزارم ) دوستان اي كه تجربه ريستور را دارن لطفا كمك كنيد

با تشكر از همه دوستان عزيز

debugger
چهارشنبه 31 تیر 1388, 17:34 عصر
دوستان اين كد هاي ريستور هست كه من از يه سورس اي تو اينترنت پيدا كردم . نمي دونم چرا داخل سورس اي كه از اينترنت دانلود كردم جواب ميده اما در پرو‍ژه من جواب نميده

شما هم تست كنيد نتيجه را بگين




using System.Data.Sql;
using System.Data.SqlClient;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

//add this References :
//Microsoft.SqlServer.ConnectionInfo
//Microsoft.SqlServer.Smo

private void button23_Click(object sender, EventArgs e)
{
ServerConnection srvConn = new ServerConnection("(local)");
srvConn.LoginSecure = true;
srvSql = new Server(srvConn);
// If there was a SQL connection created
if (srvSql != null)
{

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
openFileDialog1.Filter = "Backup File (*.Bak)|*.Bak";
openFileDialog1.DefaultExt = "Bak";

Restore rstDatabase = new Restore();
rstDatabase.Action = RestoreActionType.Database;
rstDatabase.Database = "kdb";
BackupDeviceItem bkpDevice = new BackupDeviceItem(openFileDialog1.FileName, DeviceType.File);
rstDatabase.Devices.Add(bkpDevice);
rstDatabase.ReplaceDatabase = true;
rstDatabase.SqlRestore(srvSql);
MessageBox.Show("Restore Success");
}
}
else
{

MessageBox.Show("A connection to a SQL server was not established.", "Not Connected to Server", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

iranigirl1364
پنج شنبه 01 مرداد 1388, 07:55 صبح
مشكل اتچ به كل رفع شد

مشكل بكاپ را هم حل كردم

فقط مونده ريستور :

كد هاي بكاپ را اگر به اين شكل بنويسيد هميشه جواب ميده



private void button20_Click(object sender, EventArgs e)




{

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.AddExtension = true;
saveFileDialog.CheckFileExists = false;
saveFileDialog.CheckPathExists = true;
saveFileDialog.OverwritePrompt = true;
saveFileDialog.FileName = "Backup";
saveFileDialog.Filter = "Backup File (*.Bak)|*.Bak";
saveFileDialog.DefaultExt = "Bak";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.InitialDirectory = "C:\\";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection();
sqlConnection.ConnectionString = "server=(local);database=kdb;integrated security=true;";
sqlConnection.Open();
System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText = "BACKUP DATABASE kdb TO DISK = @Destination";
sqlCommand.Parameters.Add("@Destination", SqlDbType.VarChar);
sqlCommand.Parameters["@Destination"].Value = saveFileDialog.FileName;
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
}




با اين كد ها موفق به گرفتن بكاپ شدم . هميشه هم جواب ميده


ولي ريستور هنوز مشكل هست ( يه كد هايي پيدا كردم كه با يه متد ديگه اي به غير كد هايي كه تا حالا نوشته شده ، دارم تغييراتي روش اعمال مي كنم كه بشه تو پرو‍‍ژه ها ازش استفاده كرد . اگر جواب گرفتم كد ها را همينجا ميزارم ) دوستان اي كه تجربه ريستور را دارن لطفا كمك كنيد



با تشكر از همه دوستان عزيز



با سلام:
من کد را امتحان کردم error می ده
Incotect syntax near the database name
با تشکر و احترام فراوان

raziyehbazargan
پنج شنبه 01 مرداد 1388, 10:02 صبح
کد BACKUP که گذاشتید برای sQL 2000 هم میشه استفاده کنم؟

Reza_Yarahmadi
پنج شنبه 01 مرداد 1388, 11:01 صبح
دوستان اين كد هاي ريستور هست كه من از يه سورس اي تو اينترنت پيدا كردم . نمي دونم چرا داخل سورس اي كه از اينترنت دانلود كردم جواب ميده اما در پرو‍ژه من جواب نميده

شما هم تست كنيد نتيجه را بگين
به Reference های برنامه ای که گرفتی یه نگاه بنداز ببین چه Reference هایی رو اضافه کرده که شما ندارید.

debugger
پنج شنبه 01 مرداد 1388, 13:02 عصر
با سلام:
من کد را امتحان کردم error می ده
Incotect syntax near the database name
با تشکر و احترام فراوان
[/right]

هر كجا kdb ديدي بجاش اسم ديتا بيس خودت را بزار مشكل حل ميشه

مشكل syntax هست يعني يه چيزي را اشتباه نوشتي

اين كد براي 2000 هم قابل استفاده هست

debugger
پنج شنبه 01 مرداد 1388, 13:04 عصر
به Reference های برنامه ای که گرفتی یه نگاه بنداز ببین چه Reference هایی رو اضافه کرده که شما ندارید.

در بالاي كد ها نوشتم چه رفرنس هايي را اضافه كرده

شما اين كد هاي ريستور را امتحان كردين ؟؟؟

راستي من مشكل ريستور را با يه كلك رشتي حل كردم رفت :چشمک:

Reza_Yarahmadi
پنج شنبه 01 مرداد 1388, 16:22 عصر
در بالاي كد ها نوشتم چه رفرنس هايي را اضافه كرده

شما اين كد هاي ريستور را امتحان كردين ؟؟؟

شما فقط فضای نامهای (using) استفاده شده رو نوشتید. منظور من این بود که توی پنجراه Solution گزینه References رو باز کنید ببینید چه گزینه هایی هست که توی پروژه خودتون نیست.

mahdi_7610
پنج شنبه 01 مرداد 1388, 17:04 عصر
برای استفاده از Smo باید رفرنس های microsoft.sqlsarver.smo وmicrosoft.sqlsarver.connectioninfo را به پروژه اضافه کنی .

Geradsoft
شنبه 31 مرداد 1388, 15:39 عصر
سلام دوستان. . .
من از توی همین سایت کد backup و restor را برداشتم کد Bachup کار کرد ولی کد restor کار نکرد .
نام DB من dbhakimshafae است من از کد زیر برای restor استفاده می کنم.
راستی وقتی که از توی خود نرم افزار sql من restor میکنم فایل backup را restor می کنه ولی کد زیر به من جواب نمیده. . . اگه میشه بگین اشکال کار چیه ؟؟؟
ممنون . . :چشمک:

this.openFileDialog1.ShowDialog();
if ((this.openFileDialog1.FileName != "") && (this.openFileDialog1.FileName != "openFileDialog1"))
{
try
{

SqlCommand cmd1 = new SqlCommand();
filename = openFileDialog1.FileName;
con.ConnectionString = "Data Source=(local);Initial Catalog=dbhakimshafae;Integrated Security=True";
cmd1.Connection = con;
con.Open();
cmd1.CommandText = "ALTER DATABASE dbhakimshafae SET SINGLE_USER WITH ROLLBACK IMMEDIATE" + " USE master; RESTORE DATABASE dbhakimshafae FROM DISK =N'" + filename + "'";
cmd1.Connection = con;
cmd1.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازيابي با موفقيت انجام شد");
}
catch
{
MessageBox.Show("بازيابي با موفقيت انجام نشد");

}
}

HAMRAHSOFT.IR
سه شنبه 24 شهریور 1388, 13:48 عصر
دوستان ميشه يك نمونه كامل بزاريد تحت #C

moj_asghary
دوشنبه 17 خرداد 1389, 22:47 عصر
از همه شما دوستان ممنونم که برای اتچ کردن و بکآپ گرفتن کمک کردید اما همچنان مشکل restore حل نشده لطفا این مورد رو هم کمک کنید.

Mahdi8002
پنج شنبه 29 دی 1390, 19:47 عصر
salam manam alan test kardam va ghablan ham test kardeh bodam ama ba error(Restore failed for Server 'GDSCS-PC'.) movajeh misham kasi javabesho midoneh

Mahdi8002
پنج شنبه 29 دی 1390, 19:53 عصر
baraye back up in javab mideh
man hamisheh azash estefadeh mikonam ama restor moshkel darem

private void back(string strFileName)
{
try
{
string command = "BACKUP DATABASE DB_Gold TO DISK = N'" + strFileName + "' WITH NOFORMAT, NOINIT, NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;

string scnn = Mahdi_Conection.Sql.ConectionString;
//"Data Source=.;Initial Catalog=DB_World_Water_Settle;Integrated Security=True";
oConnection = new SqlConnection(scnn);
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
oConnection.Close();
MessageBox.Show("تهيه نسخه پشتيبان از اطلاعات با موفقيت انجام شد", "پشتیبانی");
Mahdi_Conection.Sql.Disconection();
}
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Mahdi_Conection.Sql.Disconection();
}
}
private void btnBackup_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
saveFileDialog1.DefaultExt = "BAK";
saveFileDialog1.FileName = "BackFile";
saveFileDialog1.Filter = "Create BackUp (*.bak)|*.bak|All file(*.*)|*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
back(strFileName);
}
}

Mahdi8002
جمعه 30 دی 1390, 13:14 عصر
dostan bara restor kasi code soragh ndareh!!!!!!!!!!!!!!!!!!!
mamnon misham age rahnamei konid