1 ضمیمه
ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
با سلام
بنده میخوام برای پروژه خودم برای قسمت پشتیبان گیری یه دکمه برای انتخاب مسیر پشتیبان گیری و یه تکست باکس برای نشون دادن مسیری که برای پشتیبان گیری انتخاب کردیم (عکس ضمیمه هست) و هم چنین یه پروگسس بار در نظر بگیرم که هم درصد پیشرفت کار رو (بصورت 0% تا 100%) نشون بده و هم اون خط سبز پروگسس بار پر بشه و بلافاصله بعد از رسیدن به 100% و پر شدن خط پروگسس بار یه پنجره باز بشه و پیغام پشتبان گیری با موفقیت انجام شد رو نمایش بده. من الان خودم پشتیبان گیری ساده رو رو بدون نمایش درصد و پروگسس بار و همچنین بدون تکست باکس مسیر انتخاب شده انجام میدم که کدشو پایین میذارم . لطفا اصلاحات رو دوستان استاد بهم بفرمایند. ممنون از شما. در ضمن اسم لیبل نمایش درصد lblPercent و اسم پروگسس بار progressBarX1 است.
این کد برای رویداد لود فرم: private void Backup(string filename)
{
SqlConnection con = null;
try
{
string Backup = @"Backup DataBase [NameDatabase] To Disk='" + filename + "'";
SqlCommand cmd = null;
con = new SqlConnection("Data Source=.;Initial Catalog=NameDatabase;Integrated Security=True");
con.Open();
cmd = new SqlCommand(Backup, con);
cmd.ExecuteNonQuery();
MessageBox.Show("پشتیبان گیری اطلاعات با موفقیت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("Error : " + ex.Message);
}
finally
{
con.Close();
}
}
کد مربوط به دکمه پشتبان گیری:
private void btnBackUp_Click(object sender, EventArgs e)
{
SaveFileDialog SaveBackUp = new SaveFileDialog();
string filename = string.Empty;
SaveBackUp.OverwritePrompt = true;
SaveBackUp.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
SaveBackUp.DefaultExt = "Bak";
SaveBackUp.FilterIndex = 1;
SaveBackUp.FileName = DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss");
SaveBackUp.Title = "Backup SQL File";
if (SaveBackUp.ShowDialog() == DialogResult.OK)
{
filename = SaveBackUp.FileName;
Backup(filename);
}
}
نقل قول: ایجاد پروگسس بار و انتخاب مسیر پشتیبان گیری برای پروژه
با سلام
قبلاً در سایت مطرح شده
کار با progressbar و یا background worker رو جستجو کنید
موفق باشید
1 ضمیمه
نقل قول: ایجاد پروگسس بار و انتخاب مسیر پشتیبان گیری برای پروژه
این رو سریع نوشتم
تستش کنید ببینید بدردتون میخوره؟
موفق باشید
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
با اجازه از آقای افشاری
این کد رو امتحان کنید
public void BackupDatabase(SqlConnection con, string databaseName, string backupName, string backupDescription, string backupFilename) {
con.FireInfoMessageEventOnUserErrors = true;
con.InfoMessage += OnInfoMessage;
con.Open();
using(var cmd = new SqlCommand(string.Format(
"backup database {0} to disk = {1} with description = {2}, name = {3}, stats = 1",
QuoteIdentifier(databaseName),
QuoteString(backupFilename),
QuoteString(backupDescription),
QuoteString(backupName)), con)) {
cmd.ExecuteNonQuery();
}
con.Close();
con.InfoMessage -= OnInfoMessage;
con.FireInfoMessageEventOnUserErrors = false;
}
private void OnInfoMessage(object sender, SqlInfoMessageEventArgs e) {
foreach(SqlError info in e.Errors) {
if(info.Class > 10) {
// TODO: treat this as a genuine error
} else {
// TODO: treat this as a progress message
}
}
}
private string QuoteIdentifier(string name) {
return "[" + name.Replace("]", "]]") + "]";
}
private string QuoteString(string text) {
return "'" + text.Replace("'", "''") + "'";
}
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
دستوراتی که دوستمون در پست اول قرار دادند رو من امتحان کردم به درستی بکاپ میگرفت اما چرا وقتی محل ذخیره بکاپ رو دسکتاپ انتخاب میکنیم خطای نبود دسترسی میده؟ من حتی دسترسی ادمین به برنامم دادم اما حل نشد!
با سورسی هم که جناب افشاری قرار دادند من خواستم از دیتابیسم بکاپ بگیرم با خطای زیر روبرو شدم :
ناگفته نماند در سورس دیتا سورس بصورت .\SQLEXPRESS بود اما در برنامه من اونو . فقط قرار دادم
در کل فرق Data Source=.\SQLEXPRESS با Data Source=. در چیه؟
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
با سلام
. یا (Local) به معنای محلی است
برای Sql Server تجاری از Data Source=. یا Data Source=(local) و برای نسخه اکسپرس یا رایگان از Data Source=.\SQLEXPRESS استفاده می کنند
اطلاعات بیشتر:
https://www.connectionstrings.com/sql-server/
کد من مشکلی نداره و بخوبی کار میکنه فقط نکاتی که باید رعایت کنید این هست که Data Source رو بدرستی تنظیم کنید و کانکشن رو به صورت AttachDbFilename و بانک رو از Sql Server Management دیتچ Detach کرده و در مسیر برنامه هر دو فایل mdf و ldf کپی کنید و نام دیتابیس هم همانند سورس در کانکشن قرار بدید
موفق باشید
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
تشکر از شما ولی چرا وقتی محل ذخیره بکاپ رو دسکتاپ انتخاب میکنم خطای زیر رخ میده !
اما وقتی سایر درایوهارو انتخاب میکنم به راحتی ذخیره میشود....
ناگفته نماند من دسترسی ادمین هم به برنامم دادم....همچنین مجوز everyone هم به پوشه برنامه دادم ....اما مشکل حل نشد
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
نقل قول:
نوشته شده توسط
samiasoft
تشکر از شما ولی چرا وقتی محل ذخیره بکاپ رو دسکتاپ انتخاب میکنم خطای زیر رخ میده !
اما وقتی سایر درایوهارو انتخاب میکنم به راحتی ذخیره میشود....
ناگفته نماند من دسترسی ادمین هم به برنامم دادم....همچنین مجوز everyone هم به پوشه برنامه دادم ....اما مشکل حل نشد
درایو C و پوشه Desktop این مشکل رو داره . منم مشکل شما رو دارم
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
سلام.وقتی تو درایو c بک آپ میفرستید پیش فرض این خطا رو میده مگه اینکه عملیات زیر رو انجام بدید
برید تو قسمت services,msc و sqlExpress یا MSSqlserver رو پیدا کنید و دابل کلیک بزنید.تو تب log on دو تا گزینه اول رو انتخاب کنید و اوکی رو بزنید.بعد سرور sql رو رستارت بزنید
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
نقل قول:
نوشته شده توسط
mz6488
سلام.وقتی تو درایو c بک آپ میفرستید پیش فرض این خطا رو میده مگه اینکه عملیات زیر رو انجام بدید
برید تو قسمت services,msc و sqlExpress یا MSSqlserver رو پیدا کنید و دابل کلیک بزنید.تو تب log on دو تا گزینه اول رو انتخاب کنید و اوکی رو بزنید.بعد سرور sql رو رستارت بزنید
این کاری که گفتید عین همان کاری هست که روی پوشه پروژه کلیک راست کنیم و در تب security یوزر everyone رو اضافه کنیم وکلیه مجوزها رو بهش بدیم....
اگر هم اینکار ج بده خب ما میخواهیم با کدنویسی این مشکل رو حل کنیم...
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
نقل قول:
نوشته شده توسط
samiasoft
این کاری که گفتید عین همان کاری هست که روی پوشه پروژه کلیک راست کنیم و در تب security یوزر everyone رو اضافه کنیم وکلیه مجوزها رو بهش بدیم....
اگر هم اینکار ج بده خب ما میخواهیم با کدنویسی این مشکل رو حل کنیم...
اتفاقا این کاری که گفتم یه جورایی فرق میکنه با اون تنطیم سکوریتی.حتی اگه تب سکوریتی رو every on بزنید باز با مشکل مواجه میشید.تنها راهش همون راهی که گفتم.یه روش برنامه نویسی هم داره ولی ممکنه بعضی اوقات جواب نده
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='MSSQL$SQLEXP RESS'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
wmiService.Dispose();
نقل قول: ایجاد progressbar و انتخاب مسیر پشتیبان گیری برای پروژه
نقل قول:
نوشته شده توسط
mz6488
اتفاقا این کاری که گفتم یه جورایی فرق میکنه با اون تنطیم سکوریتی.حتی اگه تب سکوریتی رو every on بزنید باز با مشکل مواجه میشید.تنها راهش همون راهی که گفتم.یه روش برنامه نویسی هم داره ولی ممکنه بعضی اوقات جواب نده
تشکر از شما
این مورد رو تست میکنم...
اگر دوستان راه حل بهتری سراغ داشتند ممنون میشوم راهنمایی کنند