دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل toolStripContainer در سی شارپ
1404/07/19 -
policy based management در Sql Server
1404/07/18 -
کنترل toolStrip در سی شارپ
1404/07/18 -
کنترل تایمر (timer) در سی شارپ
1404/07/17 -
کنترل تکس باکس (textBox) در سی شارپ
1404/07/16
policy based management در Sql Server

Policy-Based Management در SQL Server
در محیطهای سازمانی، پایگاههای داده SQL Server معمولاً روی چندین سرور و در واحدهای مختلف نصب میشوند.
با گسترش این محیطها، نظارت بر تنظیمات امنیتی، پیکربندیها و استانداردهای سازمانی به یک چالش بزرگ تبدیل میشود.
اعمال دستی تنظیمات و بررسی آنها نهتنها زمانبر است، بلکه احتمال بروز خطا نیز بالاست.
برای حل این مشکل، مایکروسافت در نسخه SQL Server 2008 قابلیتی به نام Policy-Based Management (PBM) معرفی کرد.
این قابلیت به مدیران پایگاه داده اجازه میدهد قوانین و سیاستهایی (Policies) را برای پیکربندی و نگهداری SQL Server تعریف، اجرا و نظارت کنند.
مفهوم Policy-Based Management در Sql Server
Policy-Based Management یک سیستم مدیریتی در SQL Server است که به شما امکان میدهد سیاستهایی تعریف کنید تا SQL Server به صورت خودکار بررسی کند آیا تنظیمات و رفتار اجزای مختلف با استانداردهای سازمان مطابقت دارد یا خیر.
به بیان ساده، PBM یک مکانیزم برای اتوماتیکسازی کنترل و انطباق (Compliance) در سرورهای SQL است.
مثلاً میتوانید قانونی تعریف کنید که:
-
همه پایگاهها باید با Collation مشخصی ایجاد شوند.
-
Auto Shrink در هیچ دیتابیسی فعال نباشد.
-
نام تمامی جداول از یک الگوی خاص پیروی کند.
- تنظیمات امنیتی مثل password policy رعایت شود.
اجزای اصلی Policy-Based Management در SQL
-
Facet
Facet مجموعهای از ویژگیها (Properties) است که میتوان روی آن سیاستها را اعمال کرد.
هر Facet به یک بخش از SQL Server مربوط میشود، مانند Database، Table، Login یا Server Configuration. -
Condition
Condition یا «شرط» معیاری است که بر اساس ویژگیهای Facet تعریف میشود.
مثلاً شرط میتواند این باشد که "AutoShrink برابر False باشد". -
Policy
Policy یا «سیاست» ترکیبی از یک Condition و دامنه اجرا (Target) است.
مثلاً سیاستی بسازید که بررسی کند تمام دیتابیسها از AutoShrink غیرفعال استفاده میکنند. -
Target
Target بخشی از SQL Server است که سیاست روی آن اعمال میشود؛ مثلاً همه دیتابیسها، یک جدول خاص یا کل سرور. -
Evaluation Mode
نحوهی اجرای سیاستها را مشخص میکند:-
On Demand: فقط هنگام اجرای دستی بررسی میشود.
-
On Schedule: بهصورت زمانبندیشده اجرا میشود.
-
On Change: Prevent: هنگام تغییر تنظیمات، جلوی مغایرت را میگیرد.
-
On Change: Log Only: فقط تخلف را ثبت میکند ولی مانع نمیشود.
-
هدف و اهمیت Policy Based Management
هدف اصلی PBM این است که کنترل متمرکز بر تنظیمات سرورها و پایگاهها ایجاد کند تا از انحراف از استانداردها جلوگیری شود.
مزایای اصلی:
- یکپارچگی تنظیمات بین سرورها
- افزایش امنیت با اعمال سیاستهای دقیق
- صرفهجویی در زمان با اتوماسیون بررسیها
- کاهش خطاهای انسانی
- پشتیبانی از محیطهای چندسروری (Multi-Server)
نحوه فعالسازی Policy-Based Management
بهصورت پیشفرض، PBM در SQL Server نصب شده ولی ممکن است غیرفعال باشد. برای فعالسازی:
در SQL Server Management Studio (SSMS) به قسمت Management → Policy Management بروید
روی Policies کلیک راست کرده و گزینه New Policy را انتخاب کنید.
اگر خطایی دربارهی Agent دریافت کردید، سرویس SQL Server Agent را فعال کنید.
ایجاد یک Policy جدید در SSMS
بیایید گامبهگام یک مثال واقعی بسازیم 👇
-
گام ۱: تعریف شرط (Condition)
در مسیر Management → Policy Management → Conditions کلیک راست کنید و گزینه New Condition را انتخاب کنید.
نامی مانند Database_AutoShrink_Off انتخاب کنید.
در بخش Facet گزینهی Database را انتخاب کنید.
در قسمت Expression بنویسید:
@AutoShrink = False
با OK تأیید کنید. -
گام ۲: ایجاد Policy
روی Policies کلیک راست کنید → New Policy.
نامی مثل Disable AutoShrink Policy بگذارید.
در قسمت Check Condition، شرطی که ساختید را انتخاب کنید.
در قسمت Against Targets گزینهی Every Database را انتخاب کنید.
در قسمت Evaluation Mode، حالت دلخواه (مثلاً On Schedule) را تنظیم کنید. -
گام ۳: اجرای Policy
اکنون میتوانید Policy را اجرا کنید و SQL Server بهصورت خودکار تمام دیتابیسها را بررسی میکند تا ببیند آیا AutoShrink غیرفعال است یا خیر.
اجرای زمانبندیشده (Scheduled Evaluation)
برای اجرای خودکار سیاستها در فواصل زمانی مشخص:
مطمئن شوید SQL Server Agent فعال است.
در تب Evaluation Mode گزینهی On Schedule را انتخاب کنید.
زمانبندی دلخواه (روزانه، هفتگی، ساعتی) تنظیم کنید.
SQL Server در هر اجرای زمانبندی، گزارش کاملی از وضعیت انطباق سرورها ثبت میکند.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
⇐همین حالا شروع کنید و به دنیای دادهها بپیوندید!
مثالهای کاربردی از Policy-Based Management
-
بررسی وضعیت AutoShrink
جلوگیری از فعالبودن آن در محیط Production. -
کنترل نام دیتابیسها
بررسی اینکه همه دیتابیسها با پیشوند خاصی (مثلاً Corp_) شروع شوند. -
اطمینان از فعال بودن Audit
بررسی فعال بودن SQL Server Audit در همه سرورها. -
بررسی Recovery Model
اطمینان از اینکه Recovery Model دیتابیسها Full است. -
کنترل Collation و Compatibility Level
تضمین سازگاری تنظیمات بین محیطهای توسعه و تولید. -
بررسی تنظیمات امنیتی
مثلاً اطمینان از فعال بودن Login Auditing.
اجرای Policy روی چند سرور (Multi-Server Environment)
در محیطهای Enterprise معمولاً چندین سرور SQL وجود دارد.
PBM میتواند به کمک Central Management Server (CMS) روی چند سرور بهصورت همزمان اجرا شود.
مراحل کلی:
-
در SSMS به قسمت Registered Servers بروید.
-
CMS را ایجاد کنید و تمام سرورها را در آن ثبت کنید.
-
Policy را روی CMS اجرا کنید تا وضعیت همه سرورها گزارش شود.
مشاهده گزارشها و خطاها
پس از اجرای Policy، نتایج در قالب سه وضعیت نمایش داده میشود:
✅ Compliant: سیاست رعایت شده است.
⚠️ Non-Compliant: تنظیمات مغایر با سیاست هستند.
❌ Error: خطا در اجرای Policy (مثلاً دسترسی ناکافی).
گزارشها را میتوان بهصورت فایل XML یا در قالب جدول SQL ذخیره کرد تا بعداً برای مستندسازی و تحلیل استفاده شود.
نحوه اسکریپتنویسی با Policy-Based Management
تمام سیاستها در واقع در قالب اسکریپتهای XML ذخیره میشوند. این یعنی میتوانید سیاستها را بهصورت کد از یک سرور به سرور دیگر منتقل کنید.
نمونه اسکریپت برای وارد کردن Policy از فایل XML:
EXEC msdb.dbo.sp_syspolicy_import_policy
@policy_path = N'C:\Policies\AutoShrinkOff.xml';
و برای اجرای آن:
EXEC msdb.dbo.sp_syspolicy_execute_policy
@policy_name = N'Disable AutoShrink Policy';
مزایای استفاده از Policy-Based Management در SQL
-
مدیریت متمرکز تنظیمات سرورها
-
خودکارسازی بررسی استانداردهای امنیتی و پیکربندی
-
کاهش خطاهای انسانی و صرفهجویی در زمان
-
پشتیبانی از محیطهای چندسروری (Multi-Server)
-
امکان گزارشگیری و مستندسازی وضعیت سیستم
-
تضمین سازگاری محیطها (Development / Test / Production)
-
افزایش امنیت از طریق جلوگیری از تغییرات غیرمجاز
محدودیتهای Policy-Based Management
-
برخی Facetها فقط در نسخههای Enterprise قابل استفادهاند.
-
در اجرای On Change: Prevent، ممکن است عملکرد برخی اپلیکیشنها مختل شود.
-
در سرورهای بسیار بزرگ، اجرای همزمان چند Policy ممکن است فشار CPU ایجاد کند.
-
برای سیاستهای پیچیده نیاز به درک عمیق از ساختار XML دارد.
بهترین روشها (Best Practices)
-
همیشه Policyها را ابتدا در محیط تست اجرا کن.
-
برای هر Policy، توضیحات و تاریخ ایجاد ثبت کن.
-
از ترکیب PBM با ابزارهایی مثل SQL Audit برای نظارت قویتر استفاده کن.
-
گزارشهای Non-Compliant را مستند کن تا بتوانی روند پیشرفت را بسنجی.
-
از Central Management Server برای محیطهای بزرگ استفاده کن.
- سیاستها را دورهای بازبینی و بهروزرسانی کن تا مطابق با تغییرات سازمان باشند.
مثال دیگر: بررسی Recovery Model دیتابیسها
فرض کن میخواهی اطمینان حاصل کنی همه دیتابیسها با Recovery Model برابر با Full ایجاد شدهاند.
شرط (Condition):
@RecoveryModel = 1
Policy:
Facet: Database
Condition: RecoveryModel = 1
Evaluation Mode: On Demand یا On Schedule
با اجرای Policy، SQL Server فهرست دیتابیسهایی را که با Recovery Model غیر Full ساخته شدهاند، گزارش میکند.
ادغام PBM با SQL Agent Alerts
میتوان برای سیاستهای مهم، آلارم تعریف کرد تا هنگام نقض سیاست، ایمیل یا هشدار ارسال شود.
نمونه تنظیم از طریق T-SQL:
EXEC msdb.dbo.sp_add_alert
@name = N'Policy Violation Alert',
@message_id = 34050,
@severity = 0,
@notification_message = N'Violation detected in SQL Policy-Based Management',
@job_id = '00000000-0000-0000-0000-000000000000';
این کار به DBAها اجازه میدهد در لحظه از تخطیهای امنیتی مطلع شوند.
جمعبندی
Policy-Based Management در SQL Server یک ابزار قدرتمند و در عین حال ساده برای مدیریت، کنترل و انطباق سرورها با استانداردهای سازمانی است.
این قابلیت به مدیران کمک میکند بدون نیاز به بررسی دستی، تنظیمات کل سرورها را از طریق چند Policy ساده مدیریت کنند.
با استفاده از PBM، میتوان امنیت، پایداری، و یکپارچگی پیکربندیها را تضمین کرد، گزارشهای دقیق از وضعیت سیستم گرفت و از انحرافات ناخواسته جلوگیری کرد.
در نهایت، استفاده از Policy-Based Management نهتنها زمان مدیریت را کاهش میدهد، بلکه سطح کنترل و اعتماد به محیط SQL Server را بهطور چشمگیری افزایش میدهد.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .