‫Backup گیری از یک دیتابیس راه دور

فرض کنید به یک دیتابیس MS SQL Server راه دور فقط از طریق Management Studio دسترسی دارید. یعنی سرور هیچ راهی برای انتقال فایل برای ندارد. حالا شما می‌خواهید از دیتابیس مورد نظر backup بگیرید. راه معمول این است که از طریق Management Studio اقدام به Backup گیری کرده و سپس فایل bak مورد نظر را از درایو local سرور مربوطه به محل دلخواه خود کپی کنید. ولی حالا که دسترسی فایلی به سرور ندارید نمی‌توانید از این راه استفاده کرده و باید به فکر راه حل دیگری باشید.

بعضی از Data Centerها یک اینترفیس جداگانه برای کمک به این موضوع دارند. اما اگر این ابزار هم موجود نباشد چه باید کرد؟ بدتر از این تصور کنید دیتابیس مورد نظر از نوع Express بوده و دسترسی‌های شما در حداقل ممکن قرار داشته باشد. در این طور مواقع چند راه به ذهن می‌رسد.

۱- اسکریپت کردن دیتابیس و نگهداری اسکریپت‌ها به عنوان backup. من این راه رای برای یک دیتابیس SQL Express انجام دادم ولی جواب نگرفتم.

۲- استفاده از مکانیزم Export. خوشبختانه این راه را در مورد دیتابیس مورد قبل انجام دادم و جواب داد.

۳- کد نویسی و استفاده از Sql Server Management Object. من از این راه استفاده نکردم ولی خیلی به آن خوشبین نیستم. چون ظاهراً این کدها باید در همان ماشینی اجرا شوند که SQL Server در آن نصب است. خیلی از مواقع Database Server ما با Web Server یکی نیست.

۴- استفاده از راه حل خیلی خلاقانه‌ای که در این مقاله codeproject.com توضیح داده شده. در این راه حل هیچ نیازی نیست که برنامه backup گیری روی database server اجرا شود. می‌توان آن را روی کامپیوتر local غیر سرور خود اجرا کرد. روش این برنامه گرفتن backup روی خود سرور، ایجاد یک جدول دیتابیسی موقتی، insert کردن محتوای فایل backup در جدول موقتی، select معمولی از جدول موقتی و انتقال آن به کامپیوتر local و ذخیره آن به صورت یک backup واقعی! البته من با این که با یکی از قلق‌های این برنامه کنار آمدم ولی نتوانستم از آن استفاده واقعی بکنم. چون احتیاج به دسترسی bulk داشتم. هر چند که این روش برای من کار نکرد ولی خلاقیت آن مرا شگفت زده کرد. مطمئن هستم می‌توان با استفاده از راه حل های مشابهی مشکل دسترسی bulk را هم حل کرد.

Comments

  1. Farhad Yazdan-Panah

    در این گونه موارد من میرم سراغ محصولات RedGate.
    (کل اطلاعات رو روی یه سرور دیگه کپی می کنم)- با Sql Compare شما رو انتقال میدم.- یا SQL Data Compare دادگان رو انتقال می دم.- دوباره با Sql Compare اشکالات رو برطرف می کنم.- جالا از پایگاه داده محلی پشتیبان میگیرم.زمانبر و خسته کنندش، ولی چاره چیه؟در ضمن این محصولات (Red Gate) دارای یک SDK هم هست که میشه تمام این کارارو با 30-40 حط کد نوشت.

  2. Farhad Yazdan-Panah

    اشکال استفاده از Export عدم انتقال ساختار (Schema) و طبعا توابع ،روال های ذخیره شده و … است.

  3. afsharm

    البته در این کاربرد خاصی که من دارم، ساختار دیتابیس مهم نیست چون اونو این طرف خط هم دارم. مهم فقط دیتاست.

  4. آرمان عجب خانی

    من هم مثل آقای یزدان پناه  از محصولات رred gate  استفاده می کنم sql compare  که  با همه چی خوب کار می کنه ولی باید بگم که SQL Data Compare  محدودیت هایی داره مثلا اگر دیتا بیس قدیمی یا بدون کلید داشته باشین باید خودتون column ها را Map  کنین که وقت گیره و برای حجم داده های زیاد باهاش جواب نگرفتم.

  5. afsharm

    این هم راه جالبیه. البته بعضی وقت‌ها اجازه browse کردن به شاخه‌های دیگر کامپیوتر وجود ندارد.

  6. Mohsen

    کلا اگه بشه به یک درایو غیر از سرور دیتابیس دسترسی پیدا کرد مشکل حل است.مثلا در یک LAN با دادن Permission لازم MS SQL به پوشه ی Share شده کلاینت و دادن مسیر کامل پوشه ی Share شده در MS SQL توانستم از طریق خود Management Studio پشتیبان را براحتی بگیرم.

  7. A.Karimi

    من با SMO یک برنامه WCFی ساختم که با گرفتن دستور از سمت کلاینت از بانک اطلاعات مورد نظر Backup گرفته، Zip می‌کند و به سمت کلاینت ارسال می‌کند. از نظر API و انجام عملیات هیچ مشکلی با SMO نیست. همانطور که گفتید بزرگترین مشکل این است که قسمت سرور این برنامه باید بر روی سرور SQL نصب شود. کاربردش برای زمانی است که مثلا شما یک سرور اختصاصی در جایی دارید که بانکهای اطلاعاتی منبع بر روی آن قرار دارد و سرعت اینترنت هم اینفدر پایین است که برنامه نویسان ترجیح می‌دهند بانک را در سیستم خود داشته باشند. راه 4 واقعاً هوشمندانه بود البته اگر بر روی هاست دسترسی‌های لازم را نبندند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *