PDA

View Full Version : بک آپ از دیتابیس mdf در vb2008



Hesamzadeh
یک شنبه 10 آذر 1387, 18:06 عصر
با عرض سلام
من تمام تاپیکهای مربوط به پشتیبان گیری از دیتا بیس رو خوندم به نتیجه نرسیدم. میخواستم بدونم چطوری از دیتابیس mdf تو vb2008 میشه تو برنامه بک آپ گرفت؟

rooshan2008
دوشنبه 11 آذر 1387, 01:34 صبح
سلام
با کمی توضیح چطورید:
بسیاری از راهبران عقیده دارند روش دیگر پشتبان گرفتن از sql Server ، متوقف کردن و کپی گرفتن از کلیه فایهای مرتبط با sql server است اما این روش ترمیم مستقل پایگاه داده و قابلیت انجام ترمیم در لحظه را امکان پذیر نمی کند بنابراین توصیه می شود از پشتیبان گیری Sql Server استفاده کنید:چشمک:
انواع پشتیبان:
1-کامل
2-تفاضلی
3-فایل و گروه فایل
3-فایل گزارش تراکنش

نحوه ایجاد :
مرحله نخست ایجاد یک دستگاه است از نظر فنی در هنگام اجرای این عمل ضروری نیست.

یک دستگاه چیست:یک دستگاه یک نشانه رو در سیستم کاتالوگ Sql Server است.که حاوی نام منطقی و مسیر فیزیکی فایل دیسک سخت یا درایو نوار مغناطیسی محلی یا یک فایل راه دور بر روی یک کامپیوتر دیگر است.

نحوه ایجاد :
البته این دستور خلاصه شده:


sp_addumpdevice 'Devicetype','Logical_name','Physicalname'

شکل کلی دستور ایجاد دستگاه
توضیح پارامتر ها:
1-'Devicetype' :
نوع دستگاهی است که می خواهید ایجاد کنید که یکی از موارد زیر است :
1-1:Disk>>>اشاره کننده به این است که پشتبان روی دیسک سخت محلی
1-2-Tape>>اشاره به درایو نوار خوان محلی
......

مثال می خواهیم یک دستگاه برای بانک northwind کنیم البته این کار قرار دادی است .


sp_addumpdevice 'disk','Northwind_Device','d:\roshan.bak'

دستور بالا به اندازه کافی کویا هست ....

برای حذف یک دستگاه از دستور :


sp_dropdevice 'Device_name'


برای مشاهده دستگاهاه از روال :


sp_helpdevice


حالا پشتبان گیری را شروع می کنیم:
به دلیل اینکه دستور backup پارامتر های بسیاری دارد من از گفتم جزییات خودداری می کنم :خجالت:
بر طبق مثال قبل با فرض اینکه شما دستگاه به نام Northwind_Device را ایجاد کرده اید دستور زیر از بام اطلاعاتی northwind پشتیبان تهیه می کند(پشتیبان کامل)



Backup database northwind to Northwind_Device With init


هم اکنون اگر به مسیر 'd:\roshan.bak' بروید می توانید فایل را مشاهده کنید.

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


Backup database northwind to Northwind_Device With defferential,NOINIT


تمام دستورات بالا بوسیله شی sqlcommand قابل اجرا می باشد.:چشمک::خجالت:

البته اگه اشکالی وجود داره بنویسید ..
اگه نیاز به توضیح بیشتر هست بنویسید...

Hesamzadeh
چهارشنبه 13 آذر 1387, 01:40 صبح
با تشکر از شما
اگر امکان دارد کمی بیشتر توضیح دهید چون من نتونستم از دستور sqlcommand استفاده کنم

Hesamzadeh
پنج شنبه 14 آذر 1387, 15:34 عصر
دوستان اگر کسی راجع به sqlcommand تو VB2008 میتونه کمک کنه دریغ نکنه!
من دیتابیس رو از طریق ویزارد به برنامه اضافه کردم و میخوام از کانکشن موجود استفاده کنم نه اینکه مجدد تو برنامه یه کانکشن جدید و یه dataset و ... توسط کد ایجاد کنم

linux
پنج شنبه 14 آذر 1387, 17:36 عصر
دوستان اگر کسی راجع به sqlcommand تو VB2008 میتونه کمک کنه دریغ نکنه!
من دیتابیس رو از طریق ویزارد به برنامه اضافه کردم و میخوام از کانکشن موجود استفاده کنم نه اینکه مجدد تو برنامه یه کانکشن جدید و یه dataset و ... توسط کد ایجاد کنم
دیگه این مطالب تو هر کتابی گفته شده توی سایت هم بارها توضیح داده شده ، از بس تکرار شده هرکی سایت را جستجو کنه پیدا می کنه

Hesamzadeh
جمعه 15 آذر 1387, 00:24 صبح
من هم همان ابتدا گفتم تاپیک های مختلف رو خوندم ولی مشکلم حل نشد
حداقل لطف کنید یه برنامه نمونه که شامل موارد زیر باشه رو قرار بدید
شامل 1- یه دیتابیس mdf که اطلاعات جدول رو تو فرم نشون بده
2- یه دکمه برای بک آپ گیری
3- یه دکمه برای ریستور
با تشکر از فراوان

shask00l
جمعه 15 آذر 1387, 02:09 صبح
با تشکر از شما
اگر امکان دارد کمی بیشتر توضیح دهید چون من نتونستم از دستور sqlcommand استفاده کنم

توی برنامه 1 ابجکت از نوع sqlcommand درست کن . بعد فرمانارو توش set کن و ........... یا علی

linux
جمعه 15 آذر 1387, 09:32 صبح
من هم همان ابتدا گفتم تاپیک های مختلف رو خوندم ولی مشکلم حل نشد
حداقل لطف کنید یه برنامه نمونه که شامل موارد زیر باشه رو قرار بدید
شامل 1- یه دیتابیس mdf که اطلاعات جدول رو تو فرم نشون بده
2- یه دکمه برای بک آپ گیری
3- یه دکمه برای ریستور
با تشکر از فراوان

:) اگر خوب می گشتی پیدا می کردی.الان هم اینجا دوست عزیزمان لطف کردن یک راهنمایی کامل گذاشتن. بازهم شما متوجه نشدید؟!
شما هنوز یک چیزی را درست متوجه نشدید که آن هم این هست که وی بی نیست که بکاپ می گیره، sql server که بکاپ می گیره شما هم باید دستور لازم برای اجرای بکاپ را به sql server بفرستید.
شما می توانید همه این دستورات را در یک روال ذخیره شده بنویسید و فقط با استفاده از sqlcommand آن روال ذخیره شده را فراخوانی کنید.
اصلا بلد هستید با sqlcommand کار کنید یا نه؟

rooshan2008
جمعه 15 آذر 1387, 20:33 عصر
سلام
بجای اینکه اینهمه چیز نامربوط و نصفه بنویسید لطف می کردید جواب میدادید بهتر بود.
(خوب شد بعضی ها کلاس ُSqlCommand رو ننوشتین وگرنه ....):قهقهه:


Dim Command1 As New SqlClient.SqlCommand
Command1.Connection = New SqlClient.SqlConnection("Data Source=(local);Initial Catalog=Northwind;User ID=sa")
Command1.Connection.Open()
Command1.CommandText = "دستورات "
Command1.ExecuteNonQuery()



قسمت سبز : یک شی به نام Command1 از کلاس Sqlcommand می سازد
قسمت قرمز (پرسپولیس):یک شی Connection ایجاد و رشته ارتباطی با بانک را تعریف می کند (به فرض می گوید به چه بانکی و چه سروری با چه یوزر و پسوری ) من در اینجا به بانک northwind متصل شدم با user به نام sa
قسمت آبی : دستورات Sql را داخل ( "دستورات ") بنویسید.
با دستور بعدی نیز دستوراتی که در قسمت قبل وارد کرده اید را اجرا می کند.:تشویق:

Hesamzadeh
جمعه 15 آذر 1387, 20:47 عصر
بله این درسته که دستورات sql تو sql اجرا میشه و برای همین هم باید از sqlcommand استفاده کرد منتها من نمیتونم از sqlcommand استفاده کنم یعنی بلد نیستم و تمام تاپیکهای تو این زمینه رو هم خوندم و تست کردم خطای زیر رو میده:
Connection property has not been initialized.
سوال منم اینه که ایا با اینکه تنظیمات کانکشن و دیتاست و ... رو به صورت ویزاردی تو محیط design انجام دادم باز هم باید یه کانکشن دیگه و یک دیتاست دیگه با یک دیتاویو دیگه تو محیط کد ایجاد کنم؟ در هر صورت چطور ارتباط بین اینارو باید برقرار کرد
مثلا الان من برای پر کردن دیتا ویو یک query تو دیتاست نوشتم به این صورت:

select * from table1 where ID like 'h%'و این query رو به نام Fill ذخیره کردم خوب حالا از دستور زیر برای پر کردن دیتاویو استفاده میکنم:

Me.table1TableAdapter.Fill(Me.DataSet1.table1)بد ون هیچ کد دیگه ای برای ایجاد کانکشن و دیتاست و غیره. خوب من نمیتونم برای هرکاری تو دیتاست یک query جدید درست کنم مضافا بر اینکه دستورات بکاپ و ریستور رو هم اونجا اصلا نمیشه نوشت برای همین خواستم توسط کد اینکارو بکنم ولی متاسفانه sqlcommand رو بلدنیستم باهاش کار کنم.
از شنبه تا حالا هم بیکار ننشستم. ولی نه توی اینجا جواب گرفتم نه جای دیگه، من کد نویسی برای sql رو تازه شروع کردم و خوب بدیهیه که بلد نباشم و در اخر اگر کسی حرفه ای باشه دیگه نمیاد اینجا سوال بپرسه (البته ببخشید شاید من اشتباه اومدم)

با عرض پوزش و تشکر از اقای rooshan

Hesamzadeh
شنبه 16 آذر 1387, 01:37 صبح
آقای روشنفکر متاسفانه مشکل من حل نشد
اول اینکه محل ذخیره بکاپ رو کاربر مشخص میکنه و بنابراین هر بار باید یک دستگاه جدید ساخته بشه و قبلی پاک بشه؟
دوم اینکه تو دستور کانکشن زیر

Command1.Connection = New SqlClient.SqlConnection("Data Source=(local);Initial Catalog=Northwind;User ID=sa")آدرس دیتابیس به صورت local امده که تو برنامه من ارور میده که دیتابیس رو پیدا نمیکنه اگر هم بخوام ادرسو مستقیم بدم نمیشه چون محل ذخیره دیتابیس تو محل نصب برنامه است و محل نصب برنامه رو کاربر مشخص میکنه

سوم اینکه اگه وقت دارین از طریق ایمیل یا جور دیگه صحبت کنیم شاید بهتر باشه

با عرض پوزش و تشکر مجدد

salehbagheri
شنبه 16 آذر 1387, 20:33 عصر
آقای روشنفکر متاسفانه مشکل من حل نشد
اول اینکه محل ذخیره بکاپ رو کاربر مشخص میکنه و بنابراین هر بار باید یک دستگاه جدید ساخته بشه و قبلی پاک بشه؟
دوم اینکه تو دستور کانکشن زیر

Command1.Connection = New SqlClient.SqlConnection("Data Source=(local);Initial Catalog=Northwind;User ID=sa")آدرس دیتابیس به صورت local امده که تو برنامه من ارور میده که دیتابیس رو پیدا نمیکنه اگر هم بخوام ادرسو مستقیم بدم نمیشه چون محل ذخیره دیتابیس تو محل نصب برنامه است و محل نصب برنامه رو کاربر مشخص میکنه


شما مي تونيد از كليد هاي Registry استفاده كنيد!
يعني برنامه تون را با استفاده از InstallShield منتشر كنيد كه ميتونيد داخل اون كدهاي رجيستري رو به دلخواه كاربر تنظيم كنيد! بعد از اون ديگه مشكل آدرس هم نداريد!

rooshan2008
شنبه 16 آذر 1387, 20:49 عصر
سوم اینکه اگه وقت دارین از طریق ایمیل یا جور دیگه صحبت کنیم شاید بهتر باشه


موافقم ایدی و ایمیل من :

Program_vb2006@yahoo.com