PDA

View Full Version : پشتیبان گیری و بازیابی بانکهای بزرگ



negar442
دوشنبه 13 مرداد 1393, 10:59 صبح
من با کدهای زیر پشتیبان گیری رو بدون مشکل انجام می دم :

SqlConnection sq = new SqlConnection("Data Source=.;Integrated Security=True");
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.bak|*.bak";
sfd.FileName = "BackupFile" + (DateTime.Now.ToShortDateString().Replace("/", ""));
if (sfd.ShowDialog() == DialogResult.OK)
{

SqlCommand com = new SqlCommand(@"backup database DBNAME to disk='" + sfd.FileName + "'", sq);
sq.Open();
Cursor.Current = Cursors.WaitCursor;
com.ExecuteNonQuery();
sq.Close();
MessageBox.Show("پشتبان گیری انجام شد");
}

بازییابی رو هم با کدهی زیر بدون مشکل انجام می دم :

SqlConnection.ClearAllPools();
SqlConnection sq = new SqlConnection("Data Source=.;Integrated Security=True");
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.bak|*.bak";
if (ofd.ShowDialog() == DialogResult.OK)
{

string query = "USE [master]; RESTORE DATABASE DBNAME FROM DISK =N'" + ofd.FileName + " ' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
SqlCommand com = new SqlCommand(query, sq);
sq.Open();
Cursor.Current = Cursors.WaitCursor;
com.ExecuteNonQuery();
sq.Close();
MessageBox.Show("بارگذاری اطلاعات انجام شد");
}

سوال من اینه که آیا با این روش back up & restore بانکهای بزرگ و پر حجم با مشکل بر نمی خوره؟

hamid_hr
دوشنبه 13 مرداد 1393, 11:19 صبح
فقط timeout رو ست کنی بهتره

com.CommandTimeout = int.MaxValue;

omid nasri
دوشنبه 13 مرداد 1393, 11:21 صبح
البته که بر می خوره، شما برای بانک های بزرگ بهتر هستش از خود SQL SERVERاستفاده کنید که اتماتیکی بکاپ میگیره با سرعت بالا و کمترین خطا.

negar442
دوشنبه 13 مرداد 1393, 11:51 صبح
البته که بر می خوره، شما برای بانک های بزرگ بهتر هستش از خود SQL SERVERاستفاده کنید که اتماتیکی بکاپ میگیره با سرعت بالا و کمترین خطا.
من یک نرم افزار نوشتم تو سیستم مشتری نصب میشه بانک هم همراه برنامه می خوام به مشتری بدم . یعنی به مشتری باید بگم رو سیستمش sql server نصب کنه؟

Sir-Programmer
دوشنبه 13 مرداد 1393, 13:12 عصر
البته که بر می خوره، شما برای بانک های بزرگ بهتر هستش از خود SQL SERVERاستفاده کنید که اتماتیکی بکاپ میگیره با سرعت بالا و کمترین خطا.
این قابلیت پشتیبان گیری خودکار فقط در نسخه های EnterPrise وجود داره من خیلی دنبال این مسئله بودم متاسفانه تو اینترنت نسخه enterprise پیدا نکردم یکی دوبار هم از اینترنت سفارش دادم که یا Setup باز نمی شد یا در مراحل نصب ارور میداد تو چند سایت هم درخواست کردم لینک دانلود یه نسخه enterprise رو قرار بدن که کسی جواب نمی داد اگه کسی لینک داره قرارش بده ممنون

omid nasri
دوشنبه 13 مرداد 1393, 14:08 عصر
این هم لینک :

http://soft98.ir/software/3594-Microsoft-SQL-Server.html

از 32 و 64 هم پشتیبانی می کنه نسخه : 2014 موجود هست.

یک برنامه نویس خوب کد رو نمی خواد حفظ کنه سعی می کنه نوع جستجو رو باد بگیره. نصری خخخخخخ

Sir-Programmer
دوشنبه 13 مرداد 1393, 17:26 عصر
این هم لینک :

http://soft98.ir/software/3594-Microsoft-SQL-Server.html

از 32 و 64 هم پشتیبانی می کنه نسخه : 2014 موجود هست.

یک برنامه نویس خوب کد رو نمی خواد حفظ کنه سعی می کنه نوع جستجو رو باد بگیره. نصری خخخخخخ
دوست عزیز به طور قطع هر لینکی اینجا قرار بدی 100% اینجانب تست زدم و نتیجه ای نداشته ! :لبخند::خجالت:
فعلاً که چند لینک دیگه هست مهم که در حال دانلودشم ولی بازم این لینکی که شما دادی رو دانلود میکنم ! و اما برای بک آپ گیری خودکار (http://dba.itpro.ir/questions/9879/%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-SQL-Server-Agent#post-18214) کلیک کنید و تاپیک های که در بک آپ گیری خودکار باهاش مواجه شدم و دوستان لطف کردن جواب دادن : لینک (http://dba.itpro.ir/questions/9879/%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-SQL-Server-Agent#post-18214) که فعلاً واسه یه مدت بیخیالش شدم :دی

omid nasri
دوشنبه 13 مرداد 1393, 21:44 عصر
جواب شما اینه که لینک که داده ام رو دانلود کنید و نصب وبه صورت اتماتیک بکاپ انجام بدید، در این گونه بانک ها استفاده از حالت پیشفرص مایکروسافت عملکرد بهتر و بهینه تری است.این لینک مشکلی نداره من خودم دارم از نسخه Interprise استفاده می کنم و مشکلی هم ندارم.

Sir-Programmer
دوشنبه 13 مرداد 1393, 23:00 عصر
جواب شما اینه که لینک که داده ام رو دانلود کنید و نصب وبه صورت اتماتیک بکاپ انجام بدید، در این گونه بانک ها استفاده از حالت پیشفرص مایکروسافت عملکرد بهتر و بهینه تری است.این لینک مشکلی نداره من خودم دارم از نسخه Interprise استفاده می کنم و مشکلی هم ندارم.
شما خودتون از هم از همین SQL که لینکشو دادی استفاده میکنی ؟

negar442
سه شنبه 14 مرداد 1393, 10:05 صبح
جواب شما اینه که لینک که داده ام رو دانلود کنید و نصب وبه صورت اتماتیک بکاپ انجام بدید، در این گونه بانک ها استفاده از حالت پیشفرص مایکروسافت عملکرد بهتر و بهینه تری است.این لینک مشکلی نداره من خودم دارم از نسخه Interprise استفاده می کنم و مشکلی هم ندارم.
سوال من اینه که توسیستم مشتری که sql server نصب نیست اونجا باید چه جوری پشتیبان گرفت؟

Sir-Programmer
سه شنبه 14 مرداد 1393, 10:17 صبح
سوال من اینه که توسیستم مشتری که sql server نصب نیست اونجا باید چه جوری پشتیبان گرفت؟
دوست عزیز باید SQL server Enterprise رو سیستم مشتری نصب کنید بعد این لینک آموزش پشتیبان گیری خودکار (http://dba.itpro.ir/articles/5029/آموزش-Backup-گیری-خودکار-از-Database-های-SQL-سرور) باز کن کامل نوشته باید چیکار کنی
موفق باشی

omid nasri
سه شنبه 14 مرداد 1393, 12:27 عصر
مگه شده تا الان برنامه ای بنویسی که با Sql server تولید شده باشه و بعد روی سیستم sql server طرف نصب نشده باشه؟

negar442
سه شنبه 14 مرداد 1393, 17:43 عصر
مگه شده تا الان برنامه ای بنویسی که با Sql server تولید شده باشه و بعد روی سیستم sql server طرف نصب نشده باشه؟
اگه سوالت خطاب به منه باید بگم در مرحله ساختن ستاپ در یکی از مرحله ها تیک مربوط به sql server express رو می زنم.
به نظر برای مشتریانی که من دارم منطقی نیست که بهشون بگم یک برنامه یک گیگابایتی روی سیستمشون نصب کنند!

omid nasri
سه شنبه 14 مرداد 1393, 18:14 عصر
شما در درک کردن بانک فکر کنم یکم تنبلی به خرج دادید؟انتقاد هستش ناراحت نشی فقط.
ببین شما مگه SQlexpres رو نصب نمی کنی؟ شما : اره
خوب مگه اکسپرس توش جدول نداره؟ امیدوارم متوجه شده باشی دارم چی میگم؟
شما نباید نصب بانک رو به عهده مشتری بزارید بلکه ااین وظیفه شماست که نصب کنید، شما اگه می خوای موفق بشی و سرعت برنامه و کارایی بالاتر باشه باید از نسخه های جدید و کیفیت بالا استفاده کنید، برای مثال همین بکاپ گیری :

شما با نصب sql server Interprise می تونی یک پلن رو فعال کنی که در ساعت مشخصی و مدت مشخص و یا نامحدودی بکاپ گرفته بشه ، همچنین بعد از گذشت چند روز مشخص بکاپ گذشته حذف و حجم به روال عادی بر گرده.
شما چی فکر می کنی؟

negar442
سه شنبه 14 مرداد 1393, 22:27 عصر
سوال خودم رو یه جور دیگه می پرسم. فرض کن من رفتم
sql server Interprise رو تو سیستم مشتری نصب کردم .بعد رفتم پی کارم. مشتری بیاد ویندوزش عوض کنه پس حالا مشتری یک ویندوز داره که sql server Interprise روش نصب نیست. حالا من دوباره باید برم sql server Interprise دوباره نصب کنم چون طبق گفته شما نصب sql server Interprise به عهده منه. این یعنی پس از هر بار نصب ویندوز مشتری من باید برم sql server Interprise براش نصب کنم که به نظر من منطقی نیست. مشکل دیگه اینه که من اگه یه مشتری داشته باشم توی یک شهر دور اونجا باید چی کار کنم؟
اصلا با sql server express و دستوراتی که در پست یک گذاشتم تا چه حجمی از دیتابیس رو میشه پشتیبان گیری و بازیابی کرد؟

veniz2008
سه شنبه 14 مرداد 1393, 23:21 عصر
سوال من اینه که آیا با این روش back up & restore بانکهای بزرگ و پر حجم با مشکل بر نمی خوره؟
سلام.
در فرآیندهای سنگین و زمانبر مثل پشتیبان گیری و بازگردانی دیتابیس های سنگین، چون کل برنامه در یک ترد (Thread) واحد انجام میشه بنابراین احتمال زیاد باعث کند شدن یا هنگ کردن برنامه تون در حین انجام این فرآیندها خواهد شد. لینک زیر رو مشاهده کنید فکر کنم براتون مفید باشه :
http://barnamenevis.org/showthread.php?415427-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7&p=1888187&viewfull=1#post1888187
موفق باشید.

omid nasri
سه شنبه 14 مرداد 1393, 23:47 عصر
خوب مگه نمیگی، ویندوز عوض شه؟ اگه داری برای یک بچه برنامه نویسی می کنه که هر روز ویندوز عوض کنه حق باشماست، ولی بیشتر شرکت های بزرگ، چند سالی اون برای ارتقا ویندوز رو عوض می کنند، دوم برای هر باز نصب برنامه شما حقی رو دریافت می کنید، خوب نکته مهم اینه که شما فقط مشکل نصب کردن هستش دیگه مشکلی برای تیبل وجود نداره ، برای درک بهتر :
شما یک کلاس میسازی که از Entity Codefirst استفاده می کنه که با این کلاس اتماتیکی تیبل ها ساخته میشه پس فقط یکی مشکل می مونه اونم نصب sql هست. که اگه تو یک شهر دیگه هم باشه می تونی از برنامه team viewer استفاده کنی.الام مشکلی هست؟

negar442
چهارشنبه 15 مرداد 1393, 10:26 صبح
خوب مگه نمیگی، ویندوز عوض شه؟ اگه داری برای یک بچه برنامه نویسی می کنه که هر روز ویندوز عوض کنه حق باشماست، ولی بیشتر شرکت های بزرگ، چند سالی اون برای ارتقا ویندوز رو عوض می کنند، دوم برای هر باز نصب برنامه شما حقی رو دریافت می کنید، خوب نکته مهم اینه که شما فقط مشکل نصب کردن هستش دیگه مشکلی برای تیبل وجود نداره ، برای درک بهتر :
شما یک کلاس میسازی که از Entity Codefirst استفاده می کنه که با این کلاس اتماتیکی تیبل ها ساخته میشه پس فقط یکی مشکل می مونه اونم نصب sql هست. که اگه تو یک شهر دیگه هم باشه می تونی از برنامه team viewer استفاده کنی.الام مشکلی هست؟

ممنون از این که وقت می زاری و جواب میدی . الآن دو سوال برام پیش اومده :
1- یک نرم افزاری مثل هلو یا یه چیز تو همین مایه ها از دیتابیسش چه جوری پشتیبان گیری می کنه؟ فرض کن من رفتم یک CD این نرم افزار رو خریدم و نصب کردم آیا لازمه که برای پشتیبان گیری و ری استور sql server رو رو سیستمم نصب کنم؟(البته فرض می کنیم هلو رو با ویژوال استودیو و sql server نوشتند.)
2- اصلا فرض کنیم sql server نصب شد رو سیستم مشتری. حالا من می خوام کاری کنم که کاربر فقط از طریق برنامه ای که نوشتم عملیات روی دیتابیس انجام بده یعنی اگه نرم افزار sql server رو باز کرد و خواست داده های جدول رو دستکاری کنه نتونه. مثلا تو اکسس میشه پسورد گذاشت sql server هم این قابلیت یا چیزی شبیه این رو داره؟

omid nasri
چهارشنبه 15 مرداد 1393, 15:00 عصر
من تا الان هم برنامه های حسابداری رو ندیدم اما من برای بکاپ گیری :

در کل برای عملیات برنامه نویسی باید قدرت ذهنی بالای داشته باشید، در بکاپ گیری شما می تونی یک الگوریتم بسازی که زمانی رو میانگین تشخیص بده که چه موقع های از برنامه استفاده نمیشه، و در همین حال زمان کم مصرفی از سی پی یو در معین کنه، با این الگوریتم شما می تونی بکاپ اتماتیکی بگیری.البته با کد نویسی بهینه.<< برای بکاپ اتماتیکی

_______________________

برای کد نویسی هم می تونی از همین کد خودت استفاده کنی با این تفاوت که تمامی مشکلات و خطا های این کد رو بگیری؛ برای مثال :
شما روی بکاپ کلیک کردید در همین لحظه سیستم خاموش میشه؛ خوب اگه سیستم خاموش نشه پس مشکلی نداره کد ، اما شما باید از ترنسکیشن استفاده کنی، تا اگه وسط کار مشکلی پیش امد اعمال انجام نشه اما در عوض شما باید همون نیمه فعالیت رو ذخیره کنی ، تا بعدا دوباره نخواد از اول اجر ابشه بلکه ادامه اون انجام بشه؟ اینها تنها اطلاعات کمی در این نوع فعالیت هستش، تجربه بنده این رو میگه.
بهترین کار اینه که شما چند مقاله انگلیسی از سایت های مشهور رو بخونی و با مشکلات بکاپ اشنایی داشته باشی، و دوم برای عملکرد بهتر یک الگوریتم بسازی تا اینکه همین جوری بیای کد نویسی کنی، مثلا بیایی کلاسی بسازی که کار تمیز انجام بشه/.

منتظر سوالات بعدی و انتقادات شما هستم. خوشحال میشم با شما این پست رو به پایان برسونم.

کمک هم خواستی ؛ سعی کن اول خودت کار کنی نتونستی هستم.

omid nasri
چهارشنبه 15 مرداد 1393, 15:10 عصر
برای جواب سوالات شما ، البته که می تونید این فعالیت ها رو بر حسب کاربر انجام بدید ، کافی هستش شما تو نت یک سرچ بزنید و اموزش دیتابیس سرور رو دانلود کنید. جواب همگی سوالات شما تو پک اموزش هست.

Sir-Programmer
دوشنبه 20 مرداد 1393, 15:19 عصر
این هم لینک :

http://soft98.ir/software/3594-Microsoft-SQL-Server.html

از 32 و 64 هم پشتیبانی می کنه نسخه : 2014 موجود هست.

یک برنامه نویس خوب کد رو نمی خواد حفظ کنه سعی می کنه نوع جستجو رو باد بگیره. نصری خخخخخخ
کاش می گفتین شما از کدام نسخه از SQL Server استفاده میکنید و چک میکردین آیا Maintenance Plan در قسمت Object Explorer اس کیو ال سرورتون وجود داره یا نه بعد لینک دانلود اس کیو الو قرار میدادی من گفتم خیلی دنبال این قضیه بود ...
این قسمت برای پشتیبان گیری خودکار حتماً باید وجود داشته باشه ، که در نسخه های EnterPrise وجود داره
122159
اینم عکس Object Explorer اس کیو ال سروری که شما گفتی EnterPrise است ...
122160
من گفتم چندین گیگ اس کیو ال دانلود کردم که هیچ کدومشون این قابلیت رو نداشت ، و چند نسخه EnterPrise هم از اینترنت گرفتم که یا Setup باز نمی شد یا در حین نصب با ارور مواجه میشود ...