راههای جلوگیری از تخریب فایلهای Access - نسخهی قابل چاپ +- فروم تخصصی - پشتیبانی CPSD (http://cpsd.ir/forum) +-- انجمن: آموزش (/forumdisplay.php?fid=9) +--- انجمن: عمومی (/forumdisplay.php?fid=21) +--- موضوع: راههای جلوگیری از تخریب فایلهای Access (/showthread.php?tid=45) |
راههای جلوگیری از تخریب فایلهای Access - CPSD Admin - ۲۵ دي ۱۳۸۹ ۰۷:۵۴ عصر
ضمن سلام
در این سلسله مقالات قصد دارم شما رو با یکی از معضلاتی که فایلهای Access با اون دست به گریبان هستند و بعضاً ایجاد مشکلات غیر قابل جبرانی می کنند , آشنا کنم . مساله تخریب فایلهای Access , مشکلی بوده که همه کاربرا مطمئناً کم و بیش همه با اون سر و کار داشتن و دارن . این مشکل عملاً یکی از معضلاتی هست که همیشه Access اونو با خودش حمل میکرده . در این میون میخوام کمک کنم که شما هم به عنوان کاربر برنامه بیکار نشینید و فقط نقش یک ناظر رو بازی نکنید . آستینها رو بالا بزنید و در رفع این مشکل Access , به کمک اون بیاید . یک همکاری دو طرفه و مسالمت آمیز مطمئناً در نهایت کفه سود رو به سمت شما سنگینی میده . راههای جلوگیری از تخریب فایلهای Access - بخش اول - CPSD Admin - ۲۵ دي ۱۳۸۹ ۰۸:۰۴ عصر تخریب ( Corruption ) در موقعی رخ میده که ساختار باینری فایل به هم بریزه .
در این حالت یا فایل به صورت کامل غیر قابل استفاده میشه و یا اینکه به صورت رندوم خطاهایی رو با خودش به همراه میاره . از اونجایی که فایل به صورت یک تک فایله , ممکنه در صورت تخریب , شما تمامی فایل رو از دست بدید . تخریب فایلهای اکسس یه امر عمومیه , اگر چه خود اکسس برخی از خطاهای جزئی رو در هنگام خوندن و نوشتن بر روی جداول پوشش میده . بنا بر این در اغلب موارد فایل شما تخریب میشه ولی شما از اون مطلع نمیشید . این امر میتونه خیلی خطرناک باشه . چرا که خطاها به مرور افزایش پیدا میکنن و به در گذر زمان به خطاهایی جدی تر و خطرناک تر تبدیل میشن . تا جایی که عملاً بازیابی رو غیر ممکن و یا بسیار سخت میکنن , که حتی در حالت دوم هم نباید به بازیافت 100% فایل امیدوار باشید . در اینجا به بررسی برخی موارد که میتونه منجر به تخریب فایل بشه میپردازیم : نقص در سخت افزار : عمده نقص سخت افزاری رو میشه در هارد دیسک و کارت شبکه جستجو کرد . یک هارد بد سکتور بیشتر از هر سخت افزار دیگه ای علاقه منده که فایل شما رو با نقص مواجه کنه . کارت شبکه ای هم که در بخش ارسال Packet ها با اشکال مواجه باشه میتونه در صورتی که فایل شما از طریق شبکه به اشتراک گذاشته شده , اون رو با خطراتی جدی مواجه کنه . متاسفانه Jet Database به Crash سیستم بسیار حساس بوده و کوچکترین خطایی رو در این بخش به سادگی از کنارش نمیگذره . Jet بر مبنای file-system کار میکنه و عملاً هر گونه Crash , منجر به توقف در عملیات نوشتن و خوندن توسط اون میشه . ( یکی از مزیتهای SQL Server و یا سیستمهای مبتی بر Client Server در همین بخشه ) تداخل نرم افزاری : استفاده از Add-Ins ها و ActiveX هایی که از ساختار طراحی دقیقی برخوردار نیستند واجرای اونها با خطا مواجه میشه , میتونه در تخریب خود فایل اکسس نقش موثری داشته باشه . به خاطر داشته باشید که اونها همون فضایی رو از حافظه استفاد میکنن که Access به اونها اختصاص داده , پس نقص در اونها , منجر به نقص در خود Access هم میشه . تداخل بین نسخه های مختلف JET : خود JET دارای نسخه های متفاوتی هستش و به مرور مورد بازبینی و تکمیل قرار گرفته . به اشتراک گذاری یک فایل بین سیستمهایی که دارای نسخه های متفاوتی از JET هستند میتونه منجر به تخریب جزئی تا کلی در فایل بشه . دسترسی چند گانه به فایل : JET یک سیستم مبتی بر فایل میباشد ( بر خلاف SQL Sever که بر اساس Client-Server است ) JET جهت استفاده چند کاربر از یک فایل , از یک فایل قفل استفاده میکنه تا بدین وسیله بتونه هماهنگی لازم رو در هنگام نوشتن و خوندن اعمال کنه . در هنگام اجرای فایل در داخل شبکه با توجه به بار ترافیکی شبکه در صورت ارسال پیغام Time Out از سوی شبکه , دستور در حالت معلق باقی میمونه . در اینگونه موارد فایل نیاز به Repair داره که متاسفانه در اغلب موارد این کار به درستی به انجام نمیرسه . تا حد امکان از به اشتراک گذاری یک فایل بین چند کاربر , جداً خودداری کنید . در صورت الزام , حتماً اون رو در حالت Front End و Back End طراحی کنید باگهای موجود در Access و JET مطمئناً محصولات Microsoft هم خالی از نقص نیستند . بسیاری از خطاها پس از عرضه محصول به بازار آشکار میشه . عمده ترین دلیل عرضه Service Pack ها هم همین آشکار شدن نقائص موجود در داخل برنامه ها هستش . طراحی ناقص و بی کفایت برنامه در حالت استفاده از یک فایل در شبکه نیاز به تغییراتی در روال طراحی وجود داره که عملاً در صورت عدم توجه به اونها میتونیم پتانسیل تخریب فایل رو تا حد زیادی بالا ببریم . قطع برق قطع برق یکی از مواردی هستش که فایلهای Access به اون خیلی حساسند . خاموش کردن کامپیوتر بدون بستن فایل هم میتونه به همون اندازه مشکل ساز بوده باشه . کمبود فضا بر روی Hard در صورتی که فایل اکسس در هنگام اجرا با کمبود فضا مواجه بشه , این امر میتونه فایل رو در معرض یک خطر جدی قرار بده . خب با این توضیحات میریم سراغ بحث دوم راههای جلوگیری از تخریب : نصب آخرین Service Pack و Hotfix ها جهت Access و JET گزینه Name AutoCorrect رو غیر فعال کنید . این امکان اضافه شده به Access از همون ابتدا در کنار مزایای نسبی خودش مشکلاتی رو هم به همراه آورد . این امکان هنوز در مراحل تکمیل قرار داره . موجب کاهش کارایی میشه و در تخریب فایل دست داره . در داخل Subform های مبتنی بر Query اقدام به مخفی کردن فیلدهای مرتبط با foreign key ها نمایید هرگز به صورت همزمان چند توسعه گر اقدام به تغییر و طراحی یک فایل نکنند هرگز اقدام به ویرایش کدهای برنامه در هنگام اجرای اون نکنید از کنار اولین خطای به نمایش در اومده از سوی اکسس به سادگی نگذرید . شاید این آخرین شانس شما برای Backup گیری , Compile , Compact و یا Repair نمودن فایل بوده باشه اگه فایل Access دچار مشکل شد , اجازه Repair اتوماتیک رو به اون ندید ( معمولاً اقدام به نمایش یک کادر در این خصوص میکنه ) , فایل ldb موجود در کنار فایل اصلی رو پاک کنید . از فایل اصلی یه کپی بگیرید و مجدداً اون رو باز و Compact/Repair رو اجرا کنید در کدهای برنامه , هر آبجکتی رو که باز میکنید مجدداً ببندیدش . به طور مثال در مورد OpenRecordset ها , حتماً پس از اتمام کار اونها رو Close کنید فراخوانی توابع API رو با دقت انجام بدید . روالهای کنترل خطای اونها در دست Access نیست . فایل رو در دو بخش ایجاد کنید , اطلاعات و جداول در داخل یک فایل ( Back End ) و مابقی آبجکتها در داخل فایلی دیگه ( Front End ) فایل رو در فرمت MDE تحویل کاربر نهایی بدید تا وقتی که الزامی وجود نداره گزینه Record-Level Locking رو در حالت عدم انتخاب قرار بدید تذکر : هیچ پیشگیری موثر تر از تهیه نسخه پشتیبان نیست . تهیه نسخه پشتیبان رو یکی از اصلی ترین وظایف روزانه خودتون قرار بدید
در تاپیکهای بعدی سعی میکنم که بعضی از سرفصلهای اشاره شده رو باز تر کنم تا قابل درک تر باشن .
موفق باشید راههای جلوگیری از تخریب فایلهای Access - بخش دوم - CPSD Admin - ۲۵ دي ۱۳۸۹ ۰۸:۱۲ عصر
با سلام
در این بخش میخوام به لزوم طراحی برنامه در حالت Front End / Back End اشاره کنم در واقع این شیوه طراحی همون جدا کردن اینترفیس برنامه از اطلاعات هستش . عملاً در حالت استفاده اشتراکی از یک فایل توسط چند کاربر به صورت همزمان , استفاده از این شیوه الزامیه . این شیوه طراحی دو مزیت اصلی زیر رو داره : - امکان سرویس دهی و تغییرات آتی برنامه رو به سهولت امکان پذیر میکنه - به علت جدا بودن اطلاعات از اینترفیس ( فرمها و گزارشها و مابقی آبجکتها ) , بار ترافیکی روی شبکه به طرز چشمگیری کاهش پیدا میکنه . این امر باعث کاهش خطاهای Time Out میشه و ضمناً اطلاعات در حالت محفوظ تری باقی میمونن . در اینگونه حالات در صورت بروز نقص در فایل در %90 مواقع مشکل به سادگی با جایگزینی Front End برنامه حل میشه . اکسس دارای یک Add-In داخلی جهت انجام این کار و جداسازی اطلاعات هستش , شما میتونید به اون در داخل مسیر زیر دسترسی پیدا کنید : Tools | Database Utilities | Database Splitter
موفق باشید راههای جلوگیری از تخریب فایلهای Access - بخش سوم - CPSD Admin - ۶ بهمن ۱۳۸۹ ۰۹:۲۸ عصر سلام در ادامه بحث Name AutoCorrect رو بیشتر باز میکنم
این امکان جدید اولین بار در Access 2000 به اون اضافه شد . در نسخه های قبلی در صورت تغییر در نام یک فیلد موجود در جدول , شما مجبور بودید در هرجایی که نامی از اون فیلد برده شده ( پرس و جوها , فرمها و ... ) بود به صورت دستی تغییرات رو بدید ولی این امکان نورسیده Access به شما این امکان رو میده که این پروسه به صورت خودکار به انجام برسه !! ولی واقعیت این هستش که Name AutoCorrect بیشتر جنبه تبلیغاتی داره ( لااقل تا نسخه 2003 اون ) . در بسیاری از مواقع تغییرات رو به صورت کامل اعمال نمیکنه و همچنان رد پایی از عدم تغییر رو به جا میذاره . همین امر باعث میشه که شما عملاً نتونید کل پروسه تغییر رو به اون بسپورید و به ناچار باید خودتون هم وارد عمل بشید !! گو اینکه این امکان گنجونده شده عملاً فاقد هیچگونه کنترلی در بخش کد نویسیهای انجام شده هستش . یعنی اگه در بخشی از کدهای برنامه به نامی قبل از تغییر اشاره کرده باشید , اکسس هیچگونه تغییری رو در داخل کدهای ارجاع داده شده به اون پس از تغییر نامش , به انجام نمی رسونه . متاسفانه ردپاهای غلطی که این امکان در پشت برنامه به جا میذاره , پتانسیل برنامه رو برای تخریب تا حد زیادی بالا میبره . قبل از شروع طراحی این گزینه رو در حالت غیر فعال قرار بدید و عطای اون رو به لقائش ببخشید . توجه کنید : قبل از شروع طراحی باید اینکار رو انجام داده باشید در صورتی که فایلی رو قبلاً طراحی کردید , یه فایل جدید ایجاد کنید , Name AutoCorrect رو در داخل اون غیر فعال کنید و کلیه آبجکتهای موجود در داخل فایل اول رو به داخل فایل دوم Import کنید , فایل رو Compact/Repair کنید و به طراحی ادامه بدید . توصیه : در این خصوص هیچ پیشگیری بهتر از صرف دقت بیشتر در طراحی اولیه نیست محل این گزینه در داخل مسیر زیر هستش Tools | Options | General
موفق باشید راههای جلوگیری از تخریب فایلهای Access - بخش چهارم - CPSD Admin - ۱۶ بهمن ۱۳۸۹ ۰۸:۴۲ عصر ضمن سلام در این مبحث سعی میشه به بعضی راههای تشخیص یک فایل تخریب شده اشاره بشه :
- در صورتی که فایل رو در داخل شبکه اجرا میکنید , اون رو از روی کامپیوتر خودتون تست کنید . اگه بدون مشکل به کار ادامه داد , مشکل ناشی از نقص موجود در شبکه شماست . معمولاً ریشه این نقص رو میتونید در داخل کارت شبکه پیدا کنید - فایل رو بر روی دستگاه دیگه ای تست کنید . در صورتی که بدون مشکل کارکرد , مشکل میتونه مربوط به تداخل نرم افزاری پیش اومده با نرم افزاری که اخیراً نصب کردید باشه و یا نقص مرتبط با اختلال بوجود اومده در سخت افزار شما باشه ( به طور مثال بد سکتور شدن هارد دیسک شما ) - لیست پیغامهای خطا رو مطابق با چک لیست زیر بررسی کنید Unrecognized Database Format
مطمئن بشید که در حال استفاده از نسخه مناسبی از Access هستید . فایلهای کمپایل شده در نسخه های بالاتر توسط نسخه های پایینتر باز نمیشن
This database is in an unrecognized format
ریشه این نقص نیز مشابه مورد بالایی هستش Enter password prompt
در صورتی که قبلاً رمز عبوری برای فایلتون در نظر نگرفتید , در هنگام باز کردن فایل برنامه از شما درخواست رمز عبور میکنه ( در این حالت ابتدا با ابزارهای کشف رمز سعی کنید که رمز اون رو پیدا کنید )
The Microsoft Jet Database Engine cannot open the file
Jet database engine از تغییر اطلاعات سر باز میزنه و اعلام میکنه که یک کاربر دیگه در حال تغییر همون اطلاعاته , در حالی که شما تنها کاربری هستید که در حال کار با برنامه اید
AOIndex is not an index in this table This database is in an unexpected state; Microsoft Access can't open it
این پیغام میتونه در حالتی ایجاد بشه که شما از داخل منوی Tools اقدام به Compact/Repair فایلتون نکرده باشید ( استفاده از روش DAO )
You do not have the necessary permissions to open this object. Please contact your system administrator مشاهده پیغام بالا در هنگامی که User Level Security فعال نشده باشه
Microsoft Access has encountered a problem and needs to close. We are sorry for the inconvenience Unexpected error 35012 نقص در شبکه
This object needs a newer version of the Microsoft Jet database module قبل از اینکه به این ننتیجه برسید که فایل تخریب شده از نصب آخرین Service Pack مطمئن بشید
Operation failed - too many indexes - reduce the number and try again هنگ کردن Access در هنگام باز کردن یک فایل The instruction at "0x????????" referenced memory at "0x????????". The memory could not be 'written ' هر نوع Add-Ins نصب شده رو از حالت نصب خارج کنید The Visual Basic for Applications Project in this database Is Corrupt The Microsoft Jet Database Engine could not find object Msys*/databases Could not find field '***' Invalid Bookmark پاک شدن اطلاعات موجود در جداول به صورت رندوم نمایش #DELETED# در هنگامی که فایل به صورت چند کاربره مورد استفاده واقع نشده توضیح : مواردی که با رنگ قرمز متمایز شدن , به نقائصی با شدت تخریب بالا اشاره میکنن . این نقصائص میتونن تا حد از دست رفتن کلی فایل هم جلو رفته باشن . در صورتی که حجم فایل زیاد باشه باید بخت و اقبال بلندی داشته باشید تا فایل به صورت کامل Recover بشه ! ( البته اگه Recover بشه ) یادآوری همیشه از فایلهای مهم خودتون BackUp بگیرید . هیچ روشی موثر تر و ساده تر از این روش نیست خدا نگهدار راههای جلوگیری از تخریب فایلهای Access - بخش پنجم - CPSD Admin - ۱۶ بهمن ۱۳۸۹ ۰۸:۵۷ عصر با سلام در بخشی دیگه اشاره ای دارم به برخی روشها که میتونه به شما در اصلاح فایل تخریب شده کمک کنه .
- در ابتدا از فایل تخریب شده خودتون نسخه پشتیبان تهیه کنید متاسفانه بعضی ابزارهای اصلاحی موجود در بازار نتیجه خوشایندی رو به همراه ندارند , قبل از اینکه بوسیله اونها بخواید فایلتون رو اصلاح کنید حتماً یک نسخه پشتیبان از اون فایل تهیه کنید
- پاک کردن فایل ldb اکسس در هنگام کار اقدام به ساخت فایلی با پسوند ldb و با همون نام اصلی در کنار فایل شما میکنه . در اولین قدم اون فایل رو پاک کنید . اگه به شما اجازه پاک کردن اون فایل داده نمیشه , فایل شما هچنان باز مونده . در داخل Task Manager پروسه اجرایی Access رو غیر فعال کنید . اگه مشکل پابرجا بود سیستم رو Restart کنید
- سعی کنید اطلاعات رو از محل Backup قبلی به روز رسانی کنید تخریب عملاً جزئی از ساختار اشیاء اکسس هستش , یعنی اینکه آبجکت در داخل فایل اکسس آسیب میبینه . از همین رو سعی در حذف آبجکتهای معیوب ( عموماً در اکثر مواقع تنها نیاز به حذف جداول وجود داره ) داشته باشید و پس از اون مرحله آبجکتهای سالم رو از داخل BackUp قبلی گرفته شده , Import کنید
عموماً چهار روش برای جایگذاری مجدد اطلاعت وجود داره , که به ترتیب کارایی و احتمال بازنشانی موفق لیست میکنم :
حذف جداول و استفاده از Import Wizard جهت ورود اونها به داخل فایل حذف تنها اطلاعات جدوال و وارد نمودن مجدد اطلاعات اونها ( از طریق Append Query ) حذف تنها اطلاعات جدوال و وارد نمودن مجدد اطلاعات اونها ( از طریق DAO ) حذف تنها اطلاعات جدوال و وارد نمودن مجدد اطلاعات اونها ( از طریق ADO ) - استفاده از Compact/Repair شما از این امکان گنجونده شده در داخل اکسس میتونید جهت اصلاح فایل استفاده کنید .طتوجه داشته باشید که در بعضی مواقع استفاده از این روش میتونه وخامت موضوع رو بیشتر کنه , پس قبل از اجرای اون حتماً از فایل نسخه پشتیبان تهیه کنید .
- استفاده از Microsoft Jet Compact Utility این ابزار جهت اصلاح بعضی نقائص عمده میتونه کاربرد داشته باشه . این محصول ارائه شده از سوی مایکروسافت عملاً کارایی بیشتری از امکان گنجونده شده در داخل خود اکسس داره میتونید اون رو از داخل مسیر زیر دریافت کنید : Download Jetcomp اطلاعات بیشتر در خصوص این محصول رو میتونید در آدرس زیر به دست بیارید
http://support.microsoft.com/kb/273956 - کدهای VBA رو Decompile کنید اجرای فایل اکسس در داخل کامپیوترهای دیگه که از کتابخونه های متفاوتی استفاده میکنن میتونه به کدهای VBA کمپایل شده آسیب برسونه
شما میتونه از دستور زیر در مواقعی که به داخل فایل دسترسی دارید ولی با خطای جدی در هنگام مواجه با کدهای برنامه روبرو میشید استفاده کنید C:\Program Files\Microsoft Office\Office\MsAccess.exe /decompile C:\FileName.mdb
پس از انجام عملیات فوق , فایل رو ببندید و پس از بازکردن اون , کدهای برنامه رو مجدداً Compile کنید
در پایان در صورتی که موفق نشدید , از ابزارهای Recovery جهت انجام اینکار استفاد کنید توضیح : ابزارهای Recovery هم معمولاً از همین تکنیکها استفاده میکنن ولیکن شما رو از پیچیدگیهای فنی اونها دور نگه میدارن
یکی از بهترین ابزارهای Recovery در این خصوص نرم افزار accessfix هستش آدرس وب سایت اون هم به شرح زیره
http://www.accessfix.com تذکر مجدد باور کنید هیچ راهی بهتر از تهیه نسخه پشتیبان نیست , این کار ساده رو انجام بدید تا هیچ وقت نگران از دست رفتن اطلاعاتتون نباشید
جهت بارگذاری نسخه کامل این محصول بر روی اینجا کلیک کنید موفق باشید راههای جلوگیری از تخریب فایلهای Access - بخش ششم , OfficeFix - CPSD Admin - ۱۶ بهمن ۱۳۸۹ ۰۹:۰۳ عصر سلام لینک بارگذاری نرم افزار OfficeFix در وبلاگ قرار داده شد . این نرم افزار قویترین نرم افزار بازیابی فایلهای تخریب شده هستش , اگر فایلتون به کمک این نرم افزار به وضعیت قبلیش برنگشت , تقریباً با ضریب بالایی میشه گفت :
فایل شما از بین رفته ! یادآوری : تمامی نرم افزارهای بازیابی , تمام تلاش خودشون رو به کار میبرن که اطلاعات رو برگردونن , بسیاری از اونها قادر به تصحیح و بازیابی آبجکتهای دیگه یا نیستن و یا اینکه بسیار ناقص و تنها بخشی از اون رو به انجام میرسونن .
البته در مورد بعضی فایلها میشه , راه حلهایی رو به کار برد , که در داخل این نرم افزارها امکان گنجوندن اونها به صورت عمومی وجود نداره ( روش برای هر فایل با سعی و خطا همراه هستش و متغیره ) , غالباً این روشها به دلایل تجاری تنها در دست افراد معدودی باقی میمونن .
ولی در تمامی حالتها امکان بازیافت یک فایل تخریب شده با سطح تخریب وسیع , وجود نداره .
خصوصاً اگه بخش Main Instruction آسیب دیده باشه . که در اون حالت بازیافت فایل چیزی شبیه به معجزه خواهد بود .
این بخش معمولاً در دو حالت احتمال تخریبش شدیداً بالا میره : 1 - قطع ناگهانی برق در هنگام انجام برخی عملیات داخلی , به طور مثال در هنگام عملیات Rollback Transaction 2 - قطع ناگهانی پروسه Compact ( به هر شکلی ) موفق باشید RE: راههای جلوگیری از تخریب فایلهای Access - ashiss - ۲۲ ارديبهشت ۱۳۹۰ ۰۱:۳۷ عصر پس كو؟چرا باز نشد واسه من؟ RE: راههای جلوگیری از تخریب فایلهای Access - CPSD Admin - ۲۴ ارديبهشت ۱۳۹۰ ۱۲:۲۱ عصر (۲۲ ارديبهشت ۱۳۹۰ ۰۱:۳۷ عصر)ashiss نوشته است: پس كو؟چرا باز نشد واسه من؟ سلام دوست من چه چیزی باز نشد ؟ |