PDA

View Full Version : backup از دیتابیس



morika
سه شنبه 15 مرداد 1387, 22:43 عصر
با سلام
من حدود 2000 بار در اين باره جستوجو كردم و حدود 200 برنامه از سايت گرفتم و تقريبا 20 كد رو هم امتحان كردم ولي به خدا مشكلم حل نشد
بابا من يه بانك با ADO از نوع Access دارم كه مي خوام تو برنامه خودم ازش يه بكآپ بگيرم حالا اصلا فرقي نمي كمه با چه روشي و چه جوري فقط مي خوام كاربر بتونه به راحتي يه بكاپ بگيره هر جا دلش خواست بعد بتونه اون بكاپ رو بگيره و دوباره تو برنامه بذاره بطوري كه DataGrid رو بر اساس اطلاعات بكاپ از نو پر كنه
اگه كسي بتونه كمك كنه واقعا آقايي كرده چون اين مسئله تا حالا دو ماه وقته منو گرفته
خيلي خيلي ممنون.

xxxxx_xxxxx
چهارشنبه 16 مرداد 1387, 07:38 صبح
اي بابا اين Backup هم دردسري شده براي همه. معلومه اين روزها همه به امنيت اطلاعات فكر مي كنند.

براي اين كه بتونيد به اين كار انعطاف بيشتري بديد بايد اول از همه ارتباط ADO رو با بانك قطع كنيد ولي اگه مثل من قطع كردن ارتباط رو ياد نداريد. بهتره:

قبل از برقراري اولين ارتباط ADO با بانك كه معمولا در رويداد load فرم است ميباست با دستور:


FileCopy Source , Destination


از بانك كپي گرفته و در محل از پيش تعيين شده توسط كاربر قرار داد.

براي برگرداندن Backup مجددا مي بايست ارتباط با بانك فعلي قطع شود و Backup مورد نظر به محل نصب كپي شود. باز چون قطع ارتباط رو ياد نداريم مجبوريم به كاربر پيغام بديم كه براي بازيابي اطلاعات لطفا برنامه را ريست كند. (خارج و مجددا وارد شود) و يك علامت در رجيستري يا يك فايل بگذاريم كه نشان درخواست استفاده از backup است. سپس در رويداد فرم چك كنيم كه اگر آن نشان وجود داشت قبل از ايجاد ارتباط Backup را برگرداند و علامت را حذف كند.

در اينجا مي بينيم كه بلد نبودن يك دستور چقدر كارو مي پيچونه. من هم چند روزه كه تو اين سايت دنبال اين دستور مي گردم.

موفق باشيد.

morika
چهارشنبه 16 مرداد 1387, 08:53 صبح
واقعا يه نفر بايد اين مشكل رو حل كنه يه گير بزرگي تو تمام سايت ايجاد كرده

parsajey
چهارشنبه 16 مرداد 1387, 11:13 صبح
واقعا يه نفر بايد اين مشكل رو حل كنه يه گير بزرگي تو تمام سايت ايجاد كرده

سلام دوست عزیز نیازی به بستن دیتا بیس در ADO نیست شما با استفاده از دستور FileCopy در VB(به همون شیوه که دوستمون xxxxx_xxxxx گفت) استفاده کنی ولی بهتره که از دستور CopyFile توابع API استفاده کنید خیلی بهتره

Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
و بعد از DataBase یه کپی بگیرید ( جای دلخواه ) و بعد دو باره با استفاده از همون دستور CopyFile اون رو همون جای Data Base اصلی replace کنید

فقط میمونه Refresh اون DataGril که واسه خودش در ده سریه اگه از DataEnvironment استفاده کرده بودین می شد با پاک کردن و دوباره نوشتن DataMember اون Datagril رو Refresh کنید

xxxxx_xxxxx
چهارشنبه 16 مرداد 1387, 13:01 عصر
سلام دوست عزیز نیازی به بستن دیتا بیس در ADO نیست


تا زماني كه ارتباط ADO با بانك برقراره حق كپي گرفتن از آن را نداريم. مي تونيد امتحان كنيد. با پيغام خطا مواجه ميشيم.

xxxxx_xxxxx
چهارشنبه 16 مرداد 1387, 13:31 عصر
اينجا ها بحث شده:

سال 87:
http://barnamenevis.org/forum/showthread.php?t=110378&highlight=fso

سال 87:
http://barnamenevis.org/forum/showthread.php?t=104054&highlight=fso

سال 84:
http://barnamenevis.org/forum/showthread.php?t=25555&highlight=%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9% 86+%DA%AF%DB%8C%D8%B1%DB%8C

سال 86:
http://barnamenevis.org/forum/showthread.php?t=78639&highlight=%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9% 86+%DA%AF%DB%8C%D8%B1%DB%8C

اينم يكي ديگه:
http://barnamenevis.org/forum/showthread.php?t=116383

موفق باشيد

mehrnoush
چهارشنبه 16 مرداد 1387, 16:52 عصر
يعني واقا يه نفر نيست كه بتونه يه كد بزاره كه از اول تا آخر كار رو نجام برده من واقعا بهش نياز دارم

parsajey
چهارشنبه 16 مرداد 1387, 18:17 عصر
تا زماني كه ارتباط ADO با بانك برقراره حق كپي گرفتن از آن را نداريم. مي تونيد امتحان كنيد. با پيغام خطا مواجه ميشيم.

سلام
درسته شما راست می گید من پنج ساله هر وقت می خواستم دیتا Restore کنم ارتباط دیتا بیس رو قطع می کردم ( با استفاده از DataEnvironment دیتا رو وصل می کنم نه ADO )
ولی تا امروز که بدون قطع ارتباط با ADO ( چون من هم مثل شما به دلیل استفاده نکردن از ADO یادم رفته چجوری ارتباط رو قطع کنم ) این برنامه رو نوشتم. تو کپی کردن که مشکلی نیست حتی اگر فایل در حال استفاده باشه تو Restore کردن ( انتظار داشتم خطا ازمن بگیره و بگه فایل در حال استفاده است ) ولی نگرفت . - دیتا بیس فقط بازه در اون دیتا نوشته یا خونده نمی شود -
یه نمونه برنامه هم براتون upload کردم