PDA

View Full Version : سوال: back up گيري از طريق كدنويسي



csharpprogramer88
یک شنبه 22 آذر 1388, 20:09 عصر
سلام
اگر بخواهيم از طريق كد نويسي در فرممان يك دكمه داشته باشيم كه با كليك بر روي آن از بانك مورد نظرمان back up بگيريم چيكار بايد بكنيم . خواهشا دقيق تر توضيح بديد لطفا كدها كامل باشد چون من تازه كارم

با تشكر
:تشویق:

AliRezaPro
یک شنبه 22 آذر 1388, 21:37 عصر
شما سرچ کردید؟با کدوم کد مشکل دارید؟کد را بزارید
کار خاصی که قرار نیست انجام بشه
مثلا با این کد چه مشکلی داری؟
MessageBox.Show("در حین عملیات به چیزی دست نزنید");
System.IO.Directory.CreateDirectory(@"C:\BackupDatabaseLibrary");
//پشتیبان گیری از بانک اطلاعاتی
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(local);database=Library;Integrated Security=SSPI";
SqlCommand cmd = new SqlCommand();
try
{
con.Open();
//BACKUP DATABASE نام بانک اطلاعاتی TO DISK = 'مسیر پشتیبان گیری بانک اطلاعاتی'
string query = "BACKUP DATABASE Library TO DISK = 'C:\\BackupDatabaseLibrary\\Backup.MDF'";
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();

MessageBox.Show("پشتیبان گیری به درستی انجام شد");
}
catch
{
MessageBox.Show("اشکال در ارتباط با بانک اطلاعاتی");
}

csharpprogramer88
یک شنبه 22 آذر 1388, 22:13 عصر
لطف كنيد در مورد اين دو خط بيشتر توضيح بديد



//BACKUP DATABASE نام بانک اطلاعاتی TO DISK = 'مسیر پشتیبان گیری بانک اطلاعاتی'

string query = "BACKUP DATABASE projectdb. TO DISK = 'C:\\BackupDatabaseLibrary\\Backup.MDF'";



كدهاي شما رو در يك button نوشتم ولي

اشکال در ارتباط با بانک اطلاعاتی

صادر مي شود

ديتابيس من tel ميباشد .

AliRezaPro
یک شنبه 22 آذر 1388, 22:23 عصر
ببینید کد از این واضح تر وجود نداره
شما با استفاده از Query مخصوص به خودتون میتوانید تغییرات را اعمال کنید
من در اونجا برای بانک خودن نوشتم
ببینید در این خط
string query = "BACKUP DATABASE projectdb. TO DISK = 'C:\\BackupDatabaseLibrary\\Backup.MDF'";
من ادرس رو به دلخواه خودم دادم
شما اگه توضیح فارسی رو میخوندید یعنی واقعا باز هم براتون مبهم بود؟

csharpprogramer88
یک شنبه 22 آذر 1388, 22:33 عصر
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("در حین عملیات به چیزی دست نزنید");

System.IO.Directory.CreateDirectory(@"C:\BackupDat abaseLibrary");

//پشتیبان گیری از بانک اطلاعاتی

SqlConnection con = new SqlConnection();

con.ConnectionString = "Data Source=(local);database=Library;Integrated Security=SSPI";

SqlCommand cmd = new SqlCommand();
try
{
con.Open();
//BACKUP DATABASE نام بانک اطلاعاتی TO DISK = 'مسیر پشتیبان گیری بانک اطلاعاتی'
string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Backup'";



cmd.CommandText = query;

cmd.Connection = con;
cmd.ExecuteNonQuery();

con.Close();




MessageBox.Show("پشتیبان گیری به درستی انجام شد");
}

catch

{

MessageBox.Show("اشکال در ارتباط با بانک اطلاعاتی");

}
}

الان دقيقا اين كد را نوشتم


string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Backup'";

كه مسير backup اس كيو ال هست ولي باز هم پيغام "اشکال در ارتباط با بانک اطلاعاتی مي ده

علیرضا حسن زاده
یک شنبه 22 آذر 1388, 22:41 عصر
با سلام خدمت دوست عزیز
اگه هنوز مشکلت حل نشده و نمی تونی پشتیبان بگیری حتما سیستم فایلت NTFS هست موارد زیر رو انجام بده حتما جواب میگیری:
1-یه فولدر تو یکی از درایو ها که می خوای فایل پشتیبان تو اون ذخیره بشه درست کن
2-برو به قسمت Security پوشه و یوزر مروبط به نمونه SQL Server خودت رو برای اون پوشه انتخاب کن و دستیابی های خواندن/نوشتن رو برای اون فعال کن اگه همه دستیابی ها رو هم فعال کنی راحت تری
بعد دستورات بالا رو انجام بده حتما موفق میشی
توضیح اینکه اگه از یه درایو با فرمت FAT32 استفاده کنی این مشکلات رو نداری
این پست رو هم ببین تقریبا کامل توضیح دادم:
http://barnamenevis.org/forum/showthread.php?p=856048

ahrimaneahurai
یک شنبه 22 آذر 1388, 23:16 عصر
اینم برای شما مشکلی داشتید در خدمتم

AliRezaPro
دوشنبه 23 آذر 1388, 08:48 صبح
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("در حین عملیات به چیزی دست نزنید");

System.IO.Directory.CreateDirectory(@"C:\BackupDat abaseLibrary");

//پشتیبان گیری از بانک اطلاعاتی

SqlConnection con = new SqlConnection();

con.ConnectionString = "Data Source=(local);database=Library;Integrated Security=SSPI";

SqlCommand cmd = new SqlCommand();
try
{
con.Open();
//BACKUP DATABASE نام بانک اطلاعاتی TO DISK = 'مسیر پشتیبان گیری بانک اطلاعاتی'
string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Backup'";



cmd.CommandText = query;

cmd.Connection = con;
cmd.ExecuteNonQuery();

con.Close();




MessageBox.Show("پشتیبان گیری به درستی انجام شد");
}

catch

{

MessageBox.Show("اشکال در ارتباط با بانک اطلاعاتی");

}
}
الان دقيقا اين كد را نوشتم


string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Backup'";
كه مسير backup اس كيو ال هست ولي باز هم پيغام "اشکال در ارتباط با بانک اطلاعاتی مي ده
من تو پستم برات توضیح دادم
اون کد برای بانک خودم بود و شما برای خودت باید تغییر بدی
مثلا تو کانکشن نگاه کن ! اسم دیتابیس من هست که شما باید اسم دیتابیس خودت رو بزاری !

csharpprogramer88
چهارشنبه 02 دی 1388, 21:32 عصر
ضمن تقدير و تشكر از همه دوستاني كه به اين تاپيك سر زدن و تشكر بسيار ويژه از man7tomani يه برنامه آپلود مي كنم كه هم back up داره هم restore اميدوارم بدرد همه دوستان بخوره

csharpprogramer88
چهارشنبه 11 فروردین 1389, 09:27 صبح
دوستاني كه دانلود مي كنن بگن مشكل داره يا نه

samanff2000
چهارشنبه 11 فروردین 1389, 15:16 عصر
سلام دوست عزیز با این کد میتونین آدرس رو از خود کاربر بگیری فقط باید هم نام بانک رو در کد درست کنی و هم آدرس conection
این کد رو در دکمه بک آپ گیریت بنویس

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);
}

اینم در زیرش قرار بده

private void Backup(string strFileName)
{
try
{
string command = @"BACKUP DATABASE [pardakht] TO DISK = N'" + strFileName + "' WITH NOFORMAT, NOINIT, NAME = N'pardakht-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
string scnn = @"Data Source=FERDOSIA-17A1DB;Initial Catalog=pardakht;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("فایل پشتیبان با موفقیت ساخته شد", "پیام", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception err)
{
this.Cursor = Cursors.Default;
MessageBox.Show(err.Message+"اجازه دسترسی به پوشه مورد نظر داده نشده است", "Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

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

string strFileName = string.Empty;
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = openFileDialog1.FileName;
Restore(strFileName);
}

اینم زیرش قرار بده

private void Restore(string strFileName)
{
try
{
string command = "use master; RESTORE DATABASE [pardakht] FROM DISK = N'" + strFileName + "' WITH RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10; use pardakht;";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
string scnn = @"Data Source=FERDOSIA-17A1DB;Initial Catalog=pardakht;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;
MessageBox.Show("دستور با موفقیت انجام شد","پیام",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Cursor = Cursors.Default;
}
catch (Exception err)
{
this.Cursor = Cursors.Default;
MessageBox.Show("انجام دستور مورد نظر در حال حاضر امکان پذیر نمی باشد", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

موفق باشی

J.Maheri
چهارشنبه 23 تیر 1389, 21:52 عصر
سلام دوست عزیز با این کد میتونین آدرس رو از خود کاربر بگیری فقط باید هم نام بانک رو در کد درست کنی و هم آدرس conection
این کد رو در دکمه بک آپ گیریت بنویس

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);
}

اینم در زیرش قرار بده

private void Backup(string strFileName)
{
try
{
string command = @"BACKUP DATABASE [pardakht] TO DISK = N'" + strFileName + "' WITH NOFORMAT, NOINIT, NAME = N'pardakht-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
string scnn = @"Data Source=FERDOSIA-17A1DB;Initial Catalog=pardakht;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("فایل پشتیبان با موفقیت ساخته شد", "پیام", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception err)
{
this.Cursor = Cursors.Default;
MessageBox.Show(err.Message+"اجازه دسترسی به پوشه مورد نظر داده نشده است", "Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

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

string strFileName = string.Empty;
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = openFileDialog1.FileName;
Restore(strFileName);
}

اینم زیرش قرار بده

private void Restore(string strFileName)
{
try
{
string command = "use master; RESTORE DATABASE [pardakht] FROM DISK = N'" + strFileName + "' WITH RESTRICTED_USER, FILE = 1, NOUNLOAD, REPLACE, STATS = 10; use pardakht;";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
string scnn = @"Data Source=FERDOSIA-17A1DB;Initial Catalog=pardakht;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;
MessageBox.Show("دستور با موفقیت انجام شد","پیام",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Cursor = Cursors.Default;
}
catch (Exception err)
{
this.Cursor = Cursors.Default;
MessageBox.Show("انجام دستور مورد نظر در حال حاضر امکان پذیر نمی باشد", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

موفق باشی



با سلام دوست عزیز، با عنایت به کد های نوشته شما در تاپیک من توانستم بک آپ رو حل کنم اما وقتی می خوام رستور کنم این پیغام رو میده لطفا راهنمایی کنید با تشکر :
+
$exception {"Exclusive access could not be obtained because the database is in use.\r\nRESTORE DATABASE is terminating abnormally.\r\nChanged database context to 'master'.\r\nChanged database context to 'myTell'."} System.Exception {System.Data.SqlClient.SqlException}

csharpprogramer88
پنج شنبه 24 تیر 1389, 08:05 صبح
با سلام دوست عزیز، با عنایت به کد های نوشته شما در تاپیک من توانستم بک آپ رو حل کنم اما وقتی می خوام رستور کنم این پیغام رو میده لطفا راهنمایی کنید با تشکر :
+
$exception {"Exclusive access could not be obtained because the database is in use.\r\nRESTORE DATABASE is terminating abnormally.\r\nChanged database context to 'master'.\r\nChanged database context to 'myTell'."} System.Exception {System.Data.SqlClient.SqlException}


به پست 28 برید مشکلتون حل میشه
http://www.barnamenevis.org/forum/showthread.php?t=218782&page=3

mohammad kafiyan
پنج شنبه 24 تیر 1389, 12:25 عصر
سلام به دوستان من برای restore از storedproceduer استفاده کرده ولی با پیغام روبرو شدم که اجازه restore را نمی دهد وبرای همین یک تایپیک زدم ولی انگار کسی نبود به من کمک کنه اما این را دیدم فعال است اینج ادامه بدهم شاید کسی مرا راهنمایی کند
لطفا اگر ممکن است به آدرس این تایپیک مراجعه کنید و راهنمایی کنید
با تشکر از دوستان
http://www.barnamenevis.org/forum/showthread.php?t=232639