یه مثل هست میگه “لقمه رو دور سرش میچرخونه!” ، دقیقا مصداق یه سری از توسعه دهندگان sql server هست.
وقتی من کارم اینه که فقط دوتا دیتابیس رو باهم مقایسه کنم و تفاوت هاش رو در بیارم(حالا چه تو مقوله دیتا و یا چه تو مقوله فانکشن و اس پی و …)
چه لزومی داره که از ابزار های غیر رایگان و سنگین(تر) مثل Apex یا Redgate استفاده بنمایم؟
من با یه جستجو داخل گیتهاب به یه ابزار فوق العاده کاربردی به نام OpenDBDiff در این زمینه رسیدم ، که نحوه کارش رو در ادامه خدمتتون عرض میکنم.
اول برای دوستانی که شاید تازه شروع کرده باشن یا تاحالا به این مسائل برنخورده باشن صورت مسئله رو تعریف کنم:
فرض کنید شما یه دیتابیس داخل سیستم لوکال دارید و در حال توسعه اون هستید و یه نسخه دیتابیس هم در سرور نرم افزار زیر بار هست تغییرات زیادی هم دادید و قصد دارید که تغییرات جدید رو به دیتابیس سرور اصلی منتقل کنید ، راه حل چیه؟ اول: یا باید دونه دونه اس پی ها ، فانکشن ها ، جداول ، ویو ها و … بررسی کنید و تغییرات جدید رو یکی یکی روی دیتابیس اصلی اعمال کنید که روی یک بانک اطلاعاتی در مقیاس بزرگ دیوانه کنندس! دوم: از ابزاری که کارش مقایسه دو بانک اطلاعاتی هست استفاده کنید و تغییرات رو بدست بیارید ، حالا اگه اون ابزار اسکریپت اعمال تغییرات رو هم دولوپی در اختیارتون بزاره که دیگه نوره علی نوره 🙂
بریم سراغ آموزش:
۱- بعد از دانلود برنامه خیلی راحت و بدون نیاز به نصب اون رو اجرا می کنید
و با صفحه زیر روبرو می شید:

۲- در کادر سمت چپ نوشته Source database که باید اطلاعات ورود مربوط به دیتابیسی که توسعه رو روی اون انجام دادید وارد کنید و در کادر سمت نوشته Destination database که باید اطلاعات ورود مربوط به دیتابیسی که قراره تغییرات جدید روی اون بره رو وارد کنید.
۳- روی دکمه Compare کلیک کنید و تمام تغییرات نمایش داده میشه
طبق توضیحی هم که خود ابزار قرار داده ، تغییر سبز یعنی یک نمونه جدید ایجاد شده ، تغییر آبی یعنی یک نمونه تغییر کرده و تغییر قرمز هم یعنی یک نمونه حذف شده و این تغییرات روی دیتابیسی اتفاق افتاده که در حال توسعه روی اون بودید
حالا خوبیه این ابزار اینه که اسکریپت اعمال تغییرات رو خودش میده و نیازی به ساخت اسکریپت ندارید
فقط کافیه بعد از این که روی دکمه Compare کلیک کردید و تغییرات با رنگ های مشخص شده نمایش داده شد ، وارد تب Synchronized script بشید تا اسکریپت لازم برای اعمال تغییرات روی دیتابیس مقصد رو به دست بیارید
یه قابلیت خوب دیگه ای هم که این ابزار داره مشاهده و اعمال تغییرات روی دیتا هست!
بزارید یه صورت مسئله دیگه خدمتتون تعریف کنم:
فرض کنید روی یکی از جداول دیتابیس سرور اصلیتون حدود ۱ میلیون رکورد تولید شده و قصد دارید ادامه توسعه رو در شرایط واقعی تر در دیتابیس لوکالتون انجام بدید پس به دیتاهای واقعی تری هم نیاز دارید
یعنی دقیقا همین دیتاهایی که روی سرور اصلی هست
خوب راه زیاد هست برای این که از دیتابیس سرور اصلی دیتا رو بیارید روی لوکال ، اما اگه از یه ابزاری مثل همین OpenDBDiff استفاده کنید متعجب میشید که چطور ممکنه یکار انقدر ساده انجام بشه
حالا ادامه آموزش:
بعد از اینکه اطلاعات ورود دو دیتابیس رو وارد کردید (دقت کنید اون دیتابیسی به عنوان دیتابیس منبع میشه که قراره رکورد ها رو ازش کپی بگیرید) و دکمه Comare رو زدید ، از سمت راست جدولی که قصد دارید از رکورد هاش کپی بگیرید رو انتخاب کنید و از سمت چپ روی دکمه Compare data کلیک کنید
یه کادری مثل تصویر زیر باز میشه

گزینه Merge all رو بزنید و بعدش Commit و تمام!
البته این ابزار یه سری تنظیمات برای مقایسه و خروجی ها داره که من خودم باهاش کارنکردم.
امیدوارم توضیحاتم برای شما مفید واقع شده باشه.
آدرس گیتهاب این ابزار
اگه شما هم ابزار های کاربردی مثل این برنامه رو میشناسید ممنون میشم در کامنت ها معرفی کنید.