سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حال همه شما خوب و خوش باشه .
یکی از موارد مهمی که برای اکثر شرکتهای نرم افزاری پیش میاد ، نحوه بروز رسانی دیتابیس های مشتری ، پیدا کردن تفاوت های بین دیتابیس های مشتری ، نحوه توسعه Database ، و این دست موارد هست.
در این پست میخواهم در خصوص Database Project به شما توضیح بدم.
این ابزار ابتدا توسط مجموعه SSDT Tools توسط مایکروسافت در نسخه 2013 ارائه می شد و از نسخه 2015 به بعد به صورت Builtin درون خود Project های VS قرار داره. وقتی شما در VS از منوی File-new رو انتخاب می کنید یک گزینه ای به نام SQL Server projects داره که داخلش Database Project قرار داره.
حالا چه مزایایی داره؟
1- توسعه دیتابیس بسیار سریع
2- امکان Refactor کردن آبجکت های دیتابیس ، تغییر نام ، و... و اعمال در تمام آبجکتهای وابسته بدون اینکه نگران باشید جایی شاید ممکنه تغییرات شما اعمال نشده باشه.
3- امکان نوشتن Unit Test برای SP,View,Function
4- دارای Intellisense بسیار قدرتمند
5- امکان Compare کردن دیتابیس با دیتابیس محیط Production و بدست آوردن اختلافات بین دو دیتابیس
6- قابلیت اضافه شدن بسیار راحت به TFS
7- امکان Publish کردن دیتابیس و طراحی Automation build
8- امکان Publish بر روی محیط تست و اجرای تست ها بر روی محیط Test و در صورت درست بودن آن ، Publish بر روی محیط عملیاتی
9- اضافه کردن دیتابیس با استفاده از Import دیتابیس فعلی
و ایضا تمام قابلیتهایی که محصولات Red gate در اختیار شما قرار میدن به راحتی با Database Project و در یک مجموعه دراختیار خواهید داشت
نحوه کار با آن بسیار راحت هست و شما دیگه از سردرگمی در خصوص توسعه دیتابیس رهایی پیدا خواهید کرد.
سعی میکنم در پست بعدی یک فیلم از نحوه کار با این ابزار رو برای شما عزیزان فراهم کنم.
ارادتمند شما
حمیدرضا صادقیان
ID:@Hamidreza_Sadeghian
Channel :@SQL_Server
#DBA #Database_Project #Manage_Database #Database_Compare #Compare #publish #publish_Database #صادقيان #AutomationDeploy #DevOps
امیدوارم حال همه شما خوب و خوش باشه .
یکی از موارد مهمی که برای اکثر شرکتهای نرم افزاری پیش میاد ، نحوه بروز رسانی دیتابیس های مشتری ، پیدا کردن تفاوت های بین دیتابیس های مشتری ، نحوه توسعه Database ، و این دست موارد هست.
در این پست میخواهم در خصوص Database Project به شما توضیح بدم.
این ابزار ابتدا توسط مجموعه SSDT Tools توسط مایکروسافت در نسخه 2013 ارائه می شد و از نسخه 2015 به بعد به صورت Builtin درون خود Project های VS قرار داره. وقتی شما در VS از منوی File-new رو انتخاب می کنید یک گزینه ای به نام SQL Server projects داره که داخلش Database Project قرار داره.
حالا چه مزایایی داره؟
1- توسعه دیتابیس بسیار سریع
2- امکان Refactor کردن آبجکت های دیتابیس ، تغییر نام ، و... و اعمال در تمام آبجکتهای وابسته بدون اینکه نگران باشید جایی شاید ممکنه تغییرات شما اعمال نشده باشه.
3- امکان نوشتن Unit Test برای SP,View,Function
4- دارای Intellisense بسیار قدرتمند
5- امکان Compare کردن دیتابیس با دیتابیس محیط Production و بدست آوردن اختلافات بین دو دیتابیس
6- قابلیت اضافه شدن بسیار راحت به TFS
7- امکان Publish کردن دیتابیس و طراحی Automation build
8- امکان Publish بر روی محیط تست و اجرای تست ها بر روی محیط Test و در صورت درست بودن آن ، Publish بر روی محیط عملیاتی
9- اضافه کردن دیتابیس با استفاده از Import دیتابیس فعلی
و ایضا تمام قابلیتهایی که محصولات Red gate در اختیار شما قرار میدن به راحتی با Database Project و در یک مجموعه دراختیار خواهید داشت
نحوه کار با آن بسیار راحت هست و شما دیگه از سردرگمی در خصوص توسعه دیتابیس رهایی پیدا خواهید کرد.
سعی میکنم در پست بعدی یک فیلم از نحوه کار با این ابزار رو برای شما عزیزان فراهم کنم.
ارادتمند شما
حمیدرضا صادقیان
ID:@Hamidreza_Sadeghian
Channel :@SQL_Server
#DBA #Database_Project #Manage_Database #Database_Compare #Compare #publish #publish_Database #صادقيان #AutomationDeploy #DevOps
سلام و عرض ادب خدمت دوستان عزیزم
یکی از مسائلی که اکثر قریب به اتفاق شرکت ها با اون دست و پنجه نرم می کنند عدم وجود سورس کنترل و ورژن کنترل بر روی دیتابیس هست وبرای هندل کردن این مورد میان از ابزارهایی مثل RedGate استفاده می کنند که متاسفانه نمیتونه چرخه DLM رو تکمیل کنه.
استفاده از Database Project یا همون SSDT به شما کمک میکنه چرخه DLM رو پیاده سازی کنید.
می تونید برای دیتابیس ها Unit Test بنویسید ، چیزی که من تقریبا در هیچ شرکت و یا سازمانی اصلا ندیدم و حتی متاسفانه دانشش وجود نداشت.
همچنین میتونید برای دیتابیس ها محیط Test,UAT,PRoduction ایجاد کنید و پابلیش های مختلفی داشته باشین.
همزمان چندین نفر می تونن بر روی دیتابیس تغییرات اعمال کنند بدون اینکه باهم تداخلی داشته باشه.
دسترسی ها از روی محیط عملیاتی کاملا حذف میشه .
هیچ وقت تداخل تغییرات به وجود نمیاد
به راحتی میتونید ورژن های مشتریان و دیتابیس های عملیاتی ر وکنترل کنید و تغییرات رو داشته باشید و بر روی مقصد اعمال کنید.
اگر تصمیم دارید یک چرخه دقیق مهندسی نرم افزار رو پیاده سازی کنید پیشنهاد می کنم حتما چرخه DLM رو در سازمان یا شرکتتون پیاده سازی کنید.
میتونید Build های اتوماتیک پیاده سازی کنید.
خیلی راحت میتونید Refactoring بر روی دیتابیس انجام بدین بدون اینکه نگران باشید ممکنه در یک شی در داخل دیتابیس یک چیزی تغییر کرده باشه که در جاهای دیگه تغییر نکرده و میتونه در یک جایی باعث از کار افتادن سیستم بشه.
پیشنهاد می کنم برای درک صحیح از صحبتهایی که عرض کردم فیلم زیر رو حتما ببینید
ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
#DLM #DAtabase_Project #Database_Lifecycle_Management #SQL_Server #CI
https://channel9.msdn.com/Events/TechEd/Europe/2014/DBI-B312
یکی از مسائلی که اکثر قریب به اتفاق شرکت ها با اون دست و پنجه نرم می کنند عدم وجود سورس کنترل و ورژن کنترل بر روی دیتابیس هست وبرای هندل کردن این مورد میان از ابزارهایی مثل RedGate استفاده می کنند که متاسفانه نمیتونه چرخه DLM رو تکمیل کنه.
استفاده از Database Project یا همون SSDT به شما کمک میکنه چرخه DLM رو پیاده سازی کنید.
می تونید برای دیتابیس ها Unit Test بنویسید ، چیزی که من تقریبا در هیچ شرکت و یا سازمانی اصلا ندیدم و حتی متاسفانه دانشش وجود نداشت.
همچنین میتونید برای دیتابیس ها محیط Test,UAT,PRoduction ایجاد کنید و پابلیش های مختلفی داشته باشین.
همزمان چندین نفر می تونن بر روی دیتابیس تغییرات اعمال کنند بدون اینکه باهم تداخلی داشته باشه.
دسترسی ها از روی محیط عملیاتی کاملا حذف میشه .
هیچ وقت تداخل تغییرات به وجود نمیاد
به راحتی میتونید ورژن های مشتریان و دیتابیس های عملیاتی ر وکنترل کنید و تغییرات رو داشته باشید و بر روی مقصد اعمال کنید.
اگر تصمیم دارید یک چرخه دقیق مهندسی نرم افزار رو پیاده سازی کنید پیشنهاد می کنم حتما چرخه DLM رو در سازمان یا شرکتتون پیاده سازی کنید.
میتونید Build های اتوماتیک پیاده سازی کنید.
خیلی راحت میتونید Refactoring بر روی دیتابیس انجام بدین بدون اینکه نگران باشید ممکنه در یک شی در داخل دیتابیس یک چیزی تغییر کرده باشه که در جاهای دیگه تغییر نکرده و میتونه در یک جایی باعث از کار افتادن سیستم بشه.
پیشنهاد می کنم برای درک صحیح از صحبتهایی که عرض کردم فیلم زیر رو حتما ببینید
ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
#DLM #DAtabase_Project #Database_Lifecycle_Management #SQL_Server #CI
https://channel9.msdn.com/Events/TechEd/Europe/2014/DBI-B312
👍1
سلام خدمت دوستان عزیزم
امیدوارم که عالی عالی باشین
میخوام در این پست اشاره ای کنم به اینکه اساسا DBA چیست؟ (ببخشید کیست). 😁
بیاین اینجوری نگاه کنید که یک DBA مثل یک کارآگاه می مونه.
حالا چرا کارآگاه؟
به خاطر اینکه دائما باید در مانیتورینگ رفتارهای مختلف رو بررسی کنه و اگه جایی یک چیز مشکوکی دید اینقدر بره دنبالش تا ببینه سرمنشا اون چیه و چرا رخ داده.
حالا بریم یک مثال واقعی براتون بزنم
چند روز پیش بکاپ هارو بررسی میکردم و میدیدم که حجمش خیلی عجیب غریب داره میره بالا. مثلا توی یک روز دیدم ۶۰ گیگابایت بکاپ Diff ما شده در صورتی که شب قبلش ما Full backup داشتیم. توی این چند روز من جداول رو نگاه میکردم ،اول شک کردم به حجم داده های جداول شاید یک دفعه زیاد شده. بعد از این رشد عجیب غریب نگاه کردم دیدم داده ها تغییر محسوسی نداشتن ولی حجم بکاپ این دفعه ۱۵ گیگابایت باز بهش اضافه شده. به فایل LOG شک کردم و اونو بررسی کردم دیدم بله یک دفعه حجمش شده ۲۰۰ گیگابایت. رفتم سراغ دلیل این مساله.
اول Log backupها رو بررسی کردم دیدم همش درسته.
بعد رفتم دستور زیر رو اجرا کردم
Select Name , Log_reuse_wait_desc from sys.databases
دراین کد بیان میکنه که Log File شما Wait چه مساله ای هست که رشد می کنه. دیدم که در این فیلد نوشته Replication. ماهم که Replication نداشتیم ولی CDC رو راه اندازی کرده بودم.
جاب CDC رو بررسی کردم دیدم که Stop شده و به دلیل اینکه Alarm ها خیلی زیاد بوده در لاگ من گم شده و ندیدمش. اونو Start کردم و این حجم Used فایل LDF کاهش پیدا کرد. به دلیل اینکه فایل LDF من Fragment هم شده بود اومدم فایل LDF رو Shrink کردم و حجمش رو کاهش دادم روی ۲۰ گیگابایت و Fragment اون هم مرتفع شد( به دلیل اینکه قبلا هم روی این حجم تنظیمش کرده بودم)
یکی از دلایل Fragment بودن فایل LDF تعداد بالای VLF هاست. و این VLF ها به ازای هرمرتبه ای که یک Grow در فایل LDF رخ میده اضافه میشن.
این دفعه که Full backup گرفتم حجمش تقریبا ۲۰ گیگابایت کاهش پیدا کرد و به عدد نرمال قبلی رسیدم.
کسی که DBA هست مرتبا باید همه این موارد رو به صورت روزانه چک کنه و کنترل کنه. حتما باید سیستم مانیتورینگ باشه. حتما باید سیستم Alarming داشته باشین.
و حتما باید Error log ها رو مدیریت کنید که یک دفعه مثل من حجم Error های بدون استفاده باعث نشه که چنین خطاهای مهمی رو نبینین.
شاد باشین و شکرگزار
حمیدرضا صادقیان
@hamidreza_Sadeghian
#DBA
#Monitoring
#Database_Backup
امیدوارم که عالی عالی باشین
میخوام در این پست اشاره ای کنم به اینکه اساسا DBA چیست؟ (ببخشید کیست). 😁
بیاین اینجوری نگاه کنید که یک DBA مثل یک کارآگاه می مونه.
حالا چرا کارآگاه؟
به خاطر اینکه دائما باید در مانیتورینگ رفتارهای مختلف رو بررسی کنه و اگه جایی یک چیز مشکوکی دید اینقدر بره دنبالش تا ببینه سرمنشا اون چیه و چرا رخ داده.
حالا بریم یک مثال واقعی براتون بزنم
چند روز پیش بکاپ هارو بررسی میکردم و میدیدم که حجمش خیلی عجیب غریب داره میره بالا. مثلا توی یک روز دیدم ۶۰ گیگابایت بکاپ Diff ما شده در صورتی که شب قبلش ما Full backup داشتیم. توی این چند روز من جداول رو نگاه میکردم ،اول شک کردم به حجم داده های جداول شاید یک دفعه زیاد شده. بعد از این رشد عجیب غریب نگاه کردم دیدم داده ها تغییر محسوسی نداشتن ولی حجم بکاپ این دفعه ۱۵ گیگابایت باز بهش اضافه شده. به فایل LOG شک کردم و اونو بررسی کردم دیدم بله یک دفعه حجمش شده ۲۰۰ گیگابایت. رفتم سراغ دلیل این مساله.
اول Log backupها رو بررسی کردم دیدم همش درسته.
بعد رفتم دستور زیر رو اجرا کردم
Select Name , Log_reuse_wait_desc from sys.databases
دراین کد بیان میکنه که Log File شما Wait چه مساله ای هست که رشد می کنه. دیدم که در این فیلد نوشته Replication. ماهم که Replication نداشتیم ولی CDC رو راه اندازی کرده بودم.
جاب CDC رو بررسی کردم دیدم که Stop شده و به دلیل اینکه Alarm ها خیلی زیاد بوده در لاگ من گم شده و ندیدمش. اونو Start کردم و این حجم Used فایل LDF کاهش پیدا کرد. به دلیل اینکه فایل LDF من Fragment هم شده بود اومدم فایل LDF رو Shrink کردم و حجمش رو کاهش دادم روی ۲۰ گیگابایت و Fragment اون هم مرتفع شد( به دلیل اینکه قبلا هم روی این حجم تنظیمش کرده بودم)
یکی از دلایل Fragment بودن فایل LDF تعداد بالای VLF هاست. و این VLF ها به ازای هرمرتبه ای که یک Grow در فایل LDF رخ میده اضافه میشن.
این دفعه که Full backup گرفتم حجمش تقریبا ۲۰ گیگابایت کاهش پیدا کرد و به عدد نرمال قبلی رسیدم.
کسی که DBA هست مرتبا باید همه این موارد رو به صورت روزانه چک کنه و کنترل کنه. حتما باید سیستم مانیتورینگ باشه. حتما باید سیستم Alarming داشته باشین.
و حتما باید Error log ها رو مدیریت کنید که یک دفعه مثل من حجم Error های بدون استفاده باعث نشه که چنین خطاهای مهمی رو نبینین.
شاد باشین و شکرگزار
حمیدرضا صادقیان
@hamidreza_Sadeghian
#DBA
#Monitoring
#Database_Backup
👍43❤4🤔1🤣1
سلام دوستان
🔍 یک چالش جالب در SQL Server که میتونست یک مجموعه رو زمینگیر کنه!
چند وقت پیش در یکی از مجموعهها با یک مشکل عجیب مواجه بودن 👀
سیستم از یک تعداد کاربر مشخص به بعد خطا میداد و اجازه نمیداد اتصال جدیدی به دیتابیس برقرار بشه.
🔎 بعد از دیدن خطا، اولین چیزی که به ذهنم رسید این بود:
احتمالاً تنظیمات user connections دستکاری شده.
مشکل اینجا بود که حتی اتصال عادی هم به دیتابیس برقرار نمیشد!
با کلی داستان و از طریق sqlcmd تونستم مستقیم به Engine وصل بشم 💪
📌 با بررسی تنظیمات:
'sp_configure 'user connections
مشخص شد مقدار روی 100 ست شده 😐
🔧 راهحل ساده ولی حیاتی بود:
مقدار user connections رو روی 0 گذاشتم
عدد 0 یعنی:
👉 SQL Server خودش مدیریت میکنه (تا حدود 32767 اتصال همزمان)
بعد از اعمال تغییر، مجبور شدیم یک بار سرویس SQL Server رو ریست کنیم 🔄
و… مشکل بهطور کامل حل شد ✅
✨ نکته جالبتر؟
کاربران میگفتن حتی سرعت سیستم هم بهتر شده!
احتمالاً سیستم مدام سعی میکرد اتصال بگیره، خطا میخورد و منتظر میموند تا دوباره تلاش کنه ⏳
🧠 جمعبندی مهم:
هر عددی که در SQL Server میبینید، معمولاً پشتش یک منطق و سناریو وجود داره.
این تنظیمات رو:
❌ با حدس
❌ با سلیقه
❌ یا «ببینیم با کدوم عدد حال میکنیم»
نباید تغییر داد!
⚠️ یک عدد اشتباه، خیلی راحت میتونه کل یک شرکت رو دچار اختلال کنه.
کمی دقت بیشتر در این جزئیات، هزینههای خیلی بزرگی رو کم میکنه.
#SQLServer #DBA #Performance #Troubleshooting #Database #Production #Experience
🔍 یک چالش جالب در SQL Server که میتونست یک مجموعه رو زمینگیر کنه!
چند وقت پیش در یکی از مجموعهها با یک مشکل عجیب مواجه بودن 👀
سیستم از یک تعداد کاربر مشخص به بعد خطا میداد و اجازه نمیداد اتصال جدیدی به دیتابیس برقرار بشه.
🔎 بعد از دیدن خطا، اولین چیزی که به ذهنم رسید این بود:
احتمالاً تنظیمات user connections دستکاری شده.
مشکل اینجا بود که حتی اتصال عادی هم به دیتابیس برقرار نمیشد!
با کلی داستان و از طریق sqlcmd تونستم مستقیم به Engine وصل بشم 💪
📌 با بررسی تنظیمات:
'sp_configure 'user connections
مشخص شد مقدار روی 100 ست شده 😐
🔧 راهحل ساده ولی حیاتی بود:
مقدار user connections رو روی 0 گذاشتم
عدد 0 یعنی:
👉 SQL Server خودش مدیریت میکنه (تا حدود 32767 اتصال همزمان)
بعد از اعمال تغییر، مجبور شدیم یک بار سرویس SQL Server رو ریست کنیم 🔄
و… مشکل بهطور کامل حل شد ✅
✨ نکته جالبتر؟
کاربران میگفتن حتی سرعت سیستم هم بهتر شده!
احتمالاً سیستم مدام سعی میکرد اتصال بگیره، خطا میخورد و منتظر میموند تا دوباره تلاش کنه ⏳
🧠 جمعبندی مهم:
هر عددی که در SQL Server میبینید، معمولاً پشتش یک منطق و سناریو وجود داره.
این تنظیمات رو:
❌ با حدس
❌ با سلیقه
❌ یا «ببینیم با کدوم عدد حال میکنیم»
نباید تغییر داد!
⚠️ یک عدد اشتباه، خیلی راحت میتونه کل یک شرکت رو دچار اختلال کنه.
کمی دقت بیشتر در این جزئیات، هزینههای خیلی بزرگی رو کم میکنه.
#SQLServer #DBA #Performance #Troubleshooting #Database #Production #Experience
❤22👍7👌2