من می خواستم یک محیط تستی برای پروژه ای درست کنم که بخشی از آن توابع SQL بود. در محیط واقعی ما سرورهای مختلفی داریم که این توابع باید از آنها اطلاعاتی را جمع آوری کنند. اما در محیط تستی من فقط یک سرور داشتم.
من می خواستم یک محیط تستی برای پروژه ای درست کنم که بخشی از آن توابع SQL بود. در محیط واقعی ما سرورهای مختلفی داریم که این توابع باید از آنها اطلاعاتی را جمع آوری کنند. اما در محیط تستی من فقط یک سرور داشتم.
موقع restore کردن یک پایگاه داده بعد از مدتی، پیشرفت به 100% رسید و این پیام خطا ظاهر شد:
There is insufficient system memory in resource pool "internal" to run this query
و بعد از آن هم دیتابیس restore شده در حالت restoring باقی ماند.
وقتی دیتابیس ها روی AlwaysOn Availability Group می گذارید باید Recovery Model آنها را Full بگذارید. و طبیعی است که این یعنی افزوده شدن مداوم حجم Log File ها.
اما گویا Log Backup هم که راه حل منطقی این موضوع است اینجا جواب نمی دهد.
فرض کنید می خواهید یک backup را روی یک database در حال کار restore کنید. اما کاربران زیادی به آن وصل هستند و به زبان خوش هم از آن جدا نمی شوند
چطور می توانید از دست آنها خلاص شوید؟
AlwaysOn Availability Group در برابر سناریوهای زیادی مقاوم است اما فرض کنید همه سرورهای شما خاموش می شوند و بعد موقع روشن کردن می بینید که سروری که در آخرین لحظه Primary بوده حالا دیگر بالا نمی آید. شما یک یا چند secondary دارید که به تنهایی و بسادگی نمی توانند Primary شوند
اگر تنظیمات SQL Server شما به نحوی باشد که روی پورت پیش فرض 1433 گوش کند برای اتصال به آن مشکلی نخواهید داشت. اما اگر آن را روی پورت دیگری تنظیم کرده باشید برای اتصال به آن با application ها یا با Management Studio باید راهی پیدا کنید
می توانید در پنجره login در قسمت server name به جای اینکه فقط نام سرور را بزنید پشت آن شماره پورت را هم ثبت کنید و با یک کاما این دو را از هم جدا کنید:
ٍُServer name: server-name, port-number
موقع راه اندازی AlwaysOn Availability Group شما قاعدتا چندین و چند بار به انواع مختلف Failover دستی و اتوماتیک را تست می کنید. اما گاهی این Failover های دستی fail می شود.