PDA

View Full Version : حرفه ای: پشتیبان گیری + بازیابی پایگاه داده SQL



alimanam
یک شنبه 25 دی 1390, 12:46 عصر
با سلام

همونطور که قبلاً گفته بودم برای امر مهم پشتیبان و بازیابی پایگاه داده جای یک کنترل خوب و بهینه که بتونه به صورت کاملاً حرفه ایی این کار رو انجام بده برای خودم و شاید بقیه دوستان حس میشد . این شد که تصمیم گرفتم نسخه جدید کنترل خودم که نسخه قدیمی ترش در نمونه امضام هست رو بازنویسی کنم . در نسخه جدید امکاناتی جالبی رو لحاظ کردم به اختصار لیست میکنم .



کاملا یوزر فرندلی ( اینترفیس محلی ( فارسی ) و برای کاربران عادی ایجاد شده )
محافظت از فایل های پشتیبان بوسیله گذرواژه
دادن بیشترین دسترسی به برنامه نویس جهت اتصال به پایگاه داده ( هر کانکشنی که به کنترل بدین در صورت معتبر بودن کانکشن استرینگ به سرعت پشتیبان یا بازیابی میکنه )
کم کردن زحمت برنامه نویس جهت طراحی فرم پشتیبان | بازیابی

http://s1.picofile.com/file/7249760000/backupfrm.jpg

در فایل ضمیمه شده کنترل + یک برنامه کاملا ساده برای تست و چگونگی استفاده موجوده . این کنترل بعد از تست و برطرف شدن باگ های احتمالی و همچنین ارائه پیشنهادات و انتقادات شما عزیزان نهایی میشه و به صورت رایگان منتشر میشه . امیدوارم فقط دانلود خشک خالی نکنین .



تذکر :

کنترل رو باید به صورت دستی به جعبه کنترل های ویژوال استودیو اضافه کنید ( Add to ToolBox )

کنترل آپدیت شد .


موفق باشید ./

alimanam
دوشنبه 26 دی 1390, 14:47 عصر
با سلام

دوستان هیچ کس نظری حرفی پیشنهادی عملیات کربلای 4 ی چیزی نداشت ؟! سایت شده مرکز دانلود و پرسش سوالات دم پایان ترم دانشجویان عزیز . آدم بعضی مواقع از کاری که کرده پشیمون میشه واقعاً .

sh2007
دوشنبه 26 دی 1390, 19:19 عصر
دوست من از زحمتی که کشیدی ممنون
چند نکته رو می خوام بگم
1- طراحی خود نرم افزار بسیار ساده اما خیلی زیباست .
2- اما در رابطه ایجاد گذر واجه برای بازیابی بنطر من این کار لازم نیست چونکه اگه بحث امنیت باشه توی دسترسی کاربران گزینه بازیابی را بر خواهیم داشت و نکته مهمتر شما فکر یک کاربر ادمین 20 تا پشتیبان داره و بنا به مصلحتی شاید بخواد دومین پشتیبان رو بازیابی کنه حالا مجبوره تموم گذر واژه ها رو داشته باشه این یک مقدار جای سواله
3- من پشتیبان رو می گیریم اما هیچ پشتیبانی تهیه نمی کنه
4- بدیلیل انجام نشدن مورد 3 مورد 4 رو نتونستم انجام بدم

به هر حال از لطف شما سپاسگذارم

sh2007
دوشنبه 26 دی 1390, 20:02 عصر
اشکال مورد 3 رو پیدا کردم بدلیل
Warning 3 The referenced component 'Microsoft.SqlServer.ConnectionInfo' could not be found.
Warning 4 The referenced component 'Microsoft.SqlServer.Smo' could not be found.
اینها رو تو رفرنس به پروژه اضافه کردم اما این خطاها اومد

Warning 2 Could not resolve this reference. Could not locate the assembly "Microsoft.SqlServer.Smo, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. WindowsApplication6



که احتمالا شما از ورژن 2005 دارید استفاده می کنید و من چون vs 2010 دارم طبیعتا از sql 2008 دارم استفاده می کنم راه حل چیه
ممنون

alimanam
سه شنبه 27 دی 1390, 15:29 عصر
با سلام


اشکال مورد 3 رو پیدا کردم بدلیل
Warning 3 The referenced component 'Microsoft.SqlServer.ConnectionInfo' could not be found.
Warning 4 The referenced component 'Microsoft.SqlServer.Smo' could not be found.
اینها رو تو رفرنس به پروژه اضافه کردم اما این خطاها اومداز فایل های ضمیمه شده ساتفاده کن من کنترل رو در محیط VS 2008 کامپایل کردم از خطا هم معلوم بود نوشته بود Version=9.0.242.0 . در ابتدا رفرنس های مورد نظر رو که قبلا Add Reference کرده بودی رو حذف کن و به صورت دستی فایل های ضمیمه شده رو از نو بهش اضافه کن ببین مشکل حل میشه یا نه .

درمورد پیشنهاد 2 باید عرض کنم به چشم این ویژگی رو جوری تنظیم میکنم که در صورت ست نکردن این ویژگی توسط برنامه نویس بدون گذرواژه هم پشتیبان بگیره . بقیه دوستان هم که هیچ نظری ندارن دیگه ؟

موفق باشید./

sh2007
چهارشنبه 28 دی 1390, 16:18 عصر
با سلام

از فایل های ضمیمه شده ساتفاده کن من کنترل رو در محیط VS 2008 کامپایل کردم از خطا هم معلوم بود نوشته بود Version=9.0.242.0 . در ابتدا رفرنس های مورد نظر رو که قبلا Add Reference کرده بودی رو حذف کن و به صورت دستی فایل های ضمیمه شده رو از نو بهش اضافه کن ببین مشکل حل میشه یا نه .

درمورد پیشنهاد 2 باید عرض کنم به چشم این ویژگی رو جوری تنظیم میکنم که در صورت ست نکردن این ویژگی توسط برنامه نویس بدون گذرواژه هم پشتیبان بگیره . بقیه دوستان هم که هیچ نظری ندارن دیگه ؟

موفق باشید./
با سلام و خسته نباشید از اینکه طول کشید ببخشید چون گرفتاری پیش اومد نتونستم آنلاین بشم
اون دوتا فایل رو اجرا کردم اما متاسفانه همون اشکال رو داد که توی عکس می بینید
بنظر شما راه حل چیه
البته نکته رو بگم اینکه من فایلها رو توی پوشه خود برنامه کپی کردم و بعد از اونجا توی رفرنس اد کردم خطای وارنینگ نیومد اما همون هشداره اومد

alimanam
چهارشنبه 28 دی 1390, 18:29 عصر
با سلام

شما رو سیستم خودتون این مسیر رو چک کنید :



D:\Program Files\Microsoft SQL Server\90\SDK\Assemblies


البته نام درایو ریشه ممکنه واسه شما درایو C باشه رو سیستم من چون سیستم عامل رو D نصبه .... خوب ببینین اگه مسیر معتبره و وجود داره رفرنس های مورد نظر رو از اونجا به برنامه اضافه کنین و نتیجه رو بفرمائین . دوستان دیگه فکر کنم مشکلی ندارن که چیزی نمیگن شاید هم حسش نیست جواب بدن :لبخندساده: اگه میگفتن نتیجه تستشون رو حداقل میدونستم باید دقیقا چکار کرد , بگذریم .

http://s2.picofile.com/file/7254305913/12.png


موفق باشید./

sh2007
چهارشنبه 28 دی 1390, 19:12 عصر
دوست من اشکال از اینه که من 2005 رو سیستمم نیست درست می گم
ممنون

sh2007
چهارشنبه 28 دی 1390, 19:14 عصر
من متوجه نشدم توی تصویر شما دی ال ال sqlEnum هست اونو لطفا بگذارید تا دانلو د کنم اکه دقت کرده باشید توی تصویر قبلی اینو ایراد گرفته

alimanam
چهارشنبه 28 دی 1390, 20:54 عصر
منظورتون از 2005 اینه که SQL Server Managment Studio نصب نیست ؟

sh2007
پنج شنبه 29 دی 1390, 07:44 صبح
برنامه رو يه سيستمي كه 2008 vs نصب شده امتحان كردم اين خطا رو مي ده

ali_habibi1384
جمعه 07 بهمن 1390, 10:15 صبح
سلام.مرسي از ابزارتون ولي خب چيزي كه درست كردين كار چند خط كد نويسيه لازم به ساخت ابزار نيست!
اين كد پراسيجر BackUp :(كه بصورت خودكار مسير بك آپ رو از جدول tblSetting بر ميداره و يك نام فايل از كاربر ميگيره كه به اون نام در مسيري كه گفتم كپي ميكنش)


ALTER Procedure [dbo].[AutoBackUp]
@FileName nvarchar(50)
As
declare @Path nvarchar(255)
set @Path =( select top 1 PathBackUp from tblSetting )
declare @PathFileName nvarchar(300)
set @PathFileName = @Path +'\'+@FileName
set @PathFileName = REPLACE(@PathFileName ,'\\','\')
Begin
BACKUP DATABASE [MashinAlat] TO DISK = @PathFileName with noinit
End

اينهم كد پراسيجر Restore(مسير كپي كردن بك آپ رو از كاربر ميگيره و از اونجا بازيابيش ميكنه):


ALTER Procedure [dbo].[ReStoreBackUp]
@PathFile nvarchar(300)
As
set @PathFile= REPLACE(@PathFile ,'\\','\')
Begin
ALTER DATABASE [MashinAlat] SET OFFLINE WITH ROLLBACK IMMEDIATE
Restore Database [MashinAlat] From Disk =@PathFile
End

تنها كاري كه مونده يه فراخوني براي اين پراسيجرهاست.
حالا شما اگه كد ميذاشتي كه بدرد كسي بخوره امرش چيز ديگه است.(منظورم بجاي ماهي خوردن ماهيگري ياد بديد) متشكرم

ali_habibi1384
جمعه 07 بهمن 1390, 10:17 صبح
توي تالار سي شارپ هم خدمتتون عرض كردم
من برنامه تونو تست كردم.مشكل زياد داره :
1-اول بگيد اگر فايل به اس كيو ال وصل باشه چطور بك اپ ميگيره؟ شما فايلتون كپي كنار برنامه بود .(وجود چنين قابليتي از طرف شما تاييد ميشه؟)
2-من مسير بك آپ رو MyDocument انتخاب كردم گذر واژه هم براش توليد كردم اما بك اپي نديدم!
3-پس از پايان بك آپ يا ريستور بايد به كاربر بگه اين عمليات انجام شده يا نه!
4-استفاده از كنترل شما دست برنامه نويس رو ميبنده بعنوان مثال برنامه نويس بايد بتونه مسير بك اپ رو خارج از فرم طراحي شده شما به كنترل پاس بده.مثلا من مسيري رو براي كاربر در تنظيمات برنامه به برنامه ميدم تا هنگام خروج خود به خود از ديتا ها بك آپ بگيره.
5-براي اين جور كارا كه ممكنه حجم زيادي از اطلاعات مثلا يه بك آپ 2 گيگا بايتي بايد از Tread استفاده كنيد نه اينكه به كاربر بگيد هنگام بك آپ گيري فرم رو نبنده!
6-اگر داشتن گذر واژه مهمه و كاربر حتما بايد روش كليك كنه اجباري نيست بعنوان يه كليد بياريدش شما ميتونيد كاري رو كه كاربر ميخواد انجام بده شما انجام بديد يعني بجاي كيليك كاربر وقتي مثلا فرم لود شد شما تابع كليك فرم رو انجام بديد.
7-اگر گرفتن گذر واژه مهم نيست و موقع بك اپ گيري ميبيني بدون اون نميشه بك آپ گرفت حداقل يه پيامي چيزي به كاربر بده كه اون بدبخت بفهمه مشكل از كجاست!
8-اگر يوزر فرندلي بودن براي شما ممهمه خب بابا يه سري امكانات دست برنامه نويس بيچاره بذار رنگي فونتي چيزي و تغيير بده !مثلا من از رنگ آبي و فونت BRoya استفاده ميكنم يكهو بيام رنگ بندي برنامه شما رو به كاربران نشون بدم!ضايع نيست؟
9-فرض كن با اين همه مشكل و ... مشل ديگه توي كنترل به اين كوچيكي كاربر داره از برنامه شما استفاده ميكنه موقع خروج هم كليد بك آپ رو زده ولي بك آپ انجام نشده به دلايلي و برنامه شما هم چيزي به كاربر نگفته.حالا كاربر مياد بعد يه مدت ويندوز عوض ميكنه و ميخواد بك آپش رو بازيابي كنه!!! اوه اوه خودتو بذار بجاي اون بدبخت يه فاجعه فرض كن يه كارخونه كه اطلاعات 6 ماهش رو توي بك اپ نيست در جهان ريخته! و اين يعني فاجعه!!!
.
.
.
مشلات اساسي زياد داره دوست خوبم.

sh2007
جمعه 07 بهمن 1390, 11:48 صبح
سلام.مرسي از ابزارتون ولي خب چيزي كه درست كردين كار چند خط كد نويسيه لازم به ساخت ابزار نيست!
اين كد پراسيجر BackUp :(كه بصورت خودكار مسير بك آپ رو از جدول tblSetting بر ميداره و يك نام فايل از كاربر ميگيره كه به اون نام در مسيري كه گفتم كپي ميكنش)


ALTER Procedure [dbo].[AutoBackUp]
@FileName nvarchar(50)
As
declare @Path nvarchar(255)
set @Path =( select top 1 PathBackUp from tblSetting )
declare @PathFileName nvarchar(300)
set @PathFileName = @Path +'\'+@FileName
set @PathFileName = REPLACE(@PathFileName ,'\\','\')
Begin
BACKUP DATABASE [MashinAlat] TO DISK = @PathFileName with noinit
End

اينهم كد پراسيجر Restore(مسير كپي كردن بك آپ رو از كاربر ميگيره و از اونجا بازيابيش ميكنه):


ALTER Procedure [dbo].[ReStoreBackUp]
@PathFile nvarchar(300)
As
set @PathFile= REPLACE(@PathFile ,'\\','\')
Begin
ALTER DATABASE [MashinAlat] SET OFFLINE WITH ROLLBACK IMMEDIATE
Restore Database [MashinAlat] From Disk =@PathFile
End

تنها كاري كه مونده يه فراخوني براي اين پراسيجرهاست.
حالا شما اگه كد ميذاشتي كه بدرد كسي بخوره امرش چيز ديگه است.(منظورم بجاي ماهي خوردن ماهيگري ياد بديد) متشكرم

از لطف شماممنونم میشه در رابطه با کد ریستور توضیح بدید
مثلا alter و SET OFFLINE WITH ROLLBACK IMMEDIATE کارشون چیه
ممنون

ali_habibi1384
جمعه 07 بهمن 1390, 12:10 عصر
چشم. Alter اشاره به نام ديتا بيس داره و اون تيكه كد بعدي مياد اس كيو ال شما رو موقتا در حالت آفلاين قرار ميده و اطلاعات جديد رو بارگذاري ميكنه تا شما مجبور نباشي برنامه رو ببندي تا اطلاعات جديد بارگذاري بشه يعني در همون لحظه اطلاعات قابل استفاده خواهد بود.

alimanam
جمعه 07 بهمن 1390, 14:43 عصر
با سلام


توي تالار سي شارپ هم خدمتتون عرض كردم

به تفصیل جواب تک تک سوالات و اشکالتتون رو گفتم . مرسی دوست خوبم که اشکالاتی که فکر میکردی رو گفتی .

ارجاع به تاپیک مربوطه (http://barnamenevis.org/showthread.php?323295)

موفق باشید ./

ali_habibi1384
جمعه 07 بهمن 1390, 15:17 عصر
پيشنهاد ميكنم بجاي درست كردن UserInterFaceرابط كاربري براي ابزارتون مثل كنترلهاي ساعت ،openfiledialog , ... كه روي فرم چيزي ديده نميشه درست كنيد و فقط مسيرهاي BackUp , Restore رو با يكسري پارامتر ورودي درست كنيد.اينجوري خيلي كاراييش بالا ميره. مثلا كاربر بياد اينجوري كار كنه:


ManamBackUpRestore.BackUp(مسير فايل);

ميشه براي اين تابع خروجي هم گذاشت مثلا اگر True برگردونه يعني خطا داره:


if (ManamBackUpRestore.BackUp(مسير فايل)==False)
{
اينجا خود كاربر تصميم ميگيره چيكار كنه
}

يعني منظورم اينكه كلا InterFace نداشته باشه دوست خوبم

فرید نجفلو
شنبه 15 بهمن 1390, 01:19 صبح
باعرض خسته نباشید خدمت دوستان
یه نکته که اینجا و معمولا در جاهای دیگه دوستان مورد توجه قرار نمیدن اینکه از نسخه 2008 به بعد sql server گزینه password حذف شده و پشتیبانی نمی شود