" از عبارت ON برای مشخص کردن محدوده Trigger در سطح SQL Instance (در این صورت ON All SERVER نوشته میشود) و یا در سطح Database (در این حالت ON DATABASE نوشته میشود) استفاده میشود و از عبارت FOR برای مشخص کردن رویداد یا گروه رویدادی که سبب فراخوانی Trigger میشود، استفاده خواهد شد. "
در خصوص مثالی که اشاره کردید، به نظرم میرسد از Trigger برای این منظور استفاده نمیشود (در حوزهی بکاپ و ریستور)، شاید اگر قصدتان به منظور ثبت log و ... بایست از Auditing استفاده کنید. به این منظور در Auditing با توجه به جدول زیر میتوان اقدام به ثبت موارد نمود:
Action group name | Event Class | Description |
BACKUP_RESTORE_GROUP | Audit Backup/Restore | یک دستور Backup یا Restore صادر شود |
بررسی SQL Server Audit
بازبینی (Auditing) شامل پیگیری و ثبت رویدادهایی است که در سطح SQL Instance و یا Databaseهای روی یک سیستم اتفاق میافتد. چندین سطح برای Auditing در SQL Server وجود دارد که به صلاحدید و نیازمندیهای نصب شما وابسته است. شما میتوانید گروه اقدامات بازبینی سرویس دهنده (server audit action groups) را به ازای هر SQL Instance و گروه اقدامات بازبینی بانک اطلاعاتی (database audit action groups) را به ازای هر بانک اطلاعاتی ثبت کنید. رویداد Audit هر زمان عملی که مورد رسیدگی قرار گرفته اتفاق افتد، رخ میدهد.
تا پیش از SQL SERVER 2008، شما باید از خصیصههای متعددی برای انجام یک مجموعه کامل بازبینی (Auditing) برای نمونه DDL Trigger، DML Trigger و SQL Trace، بر روی یک SQL Instance استفاده میکردید.
SQL SERVER 2008، همه قابلیتهای Auditing را روی یک audit specification ترکیب میکند. Audit Specification با تعریف یک شی بازبینی (audit object) در سطح سرویس دهنده برای ثبت (logging) یک دنباله بازبینی (audit trial) آغاز میشود. توجه شود که بایست یک شیء بازبینی ایجاد کنید پیش از اینکه یک Server Audit Specification و یا Database Audit Specification ایجاد کنید.
Server Audit Specification، گروه اقدامات در سطح سرویس دهنده را جمع آوری میکند که با رویدادهای وسیعی فعال میشوند، این گروه اقدامات تحت عنوان Server-Level Audit Action Groups تشریح شده اند. شما میتوانید یک Server Audit Specification را به ازای هر Audit ایجاد کنید چرا که هر دو در محدوده یک SQL Instance ایجاد میشوند.
Database Audit Specification، گروه اقدامات در سطح بانک اطلاعاتی را جمع آوری میکند که با رویدادهای وسیعی فعال میشود. این گروه اقدامات تحت عنوانهای Database-Level Audit Action Groups و Database-Level Audit Actions تشریح شده اند.می توانید یک Database Audit Specification را به ازای هر Audit در بانک اطلاعاتی SQL Server ایجاد کنید.
همچنین میتوانید هر گروه اقدامات بازبینی(audit action groups) یا رویدادهای بازبینی(audit events) را به یک Database Audit Specification اضافه کنید. گروه اقدامات بازبینی، گروه اقدامات از پیش تعریف شده ای هستند و رویدادهای بازبینی اقدامات تجزیه ناپذیری هستند که توسط موتور بانک اطلاعاتی مورد رسیدگی قرار میگیرند، هر دو در محدوده بانک اطلاعاتی (Database) هستند. این اقدامات برای Audit فرستاده میشوند تا در Target (که میتواند یک فایل، Windows Security Log و یا Windows Application Log باشد) ذخیره شوند. برای نوشتن در Windows Security Log لازم است که Service Account سرویس دهنده شما به Policy، Generate security audits اضافه شده باشد، به صورت پیش فرض Local System، Local Service و Network Service بخشی از این Policy میباشند. پس از اینکه Audit را ایجاد و فعال کردید، Target ورودیها را دریافت خواهد کرد.
Server-Level Audit Action Groups (گروه اقدامات بازبینی در سطح سرویس دهنده)
این گروه اقدامات به گروه رویداد Security Audit شبیه هستند. به طور خلاصه این گروه اقدامات، اقداماتی را که در یک SQL Instance شامل میشوند، در بر میگیرد. برای مثال اگر گروه اقدام مناسب با Server Audit Specification اضافه شده باشد هر شیء در هر Schema که مورد دستیابی قرار میگیرد، ثبت میشود. اقدامات در سطح سرویس دهنده به شما اجازه نمیدهد که جزئیات اقدامات در سطح بانک اطلاعاتی را فیلتر کنید. یک بازبینی در سطح بانک اطلاعاتی برای انجام به جزئیات دقیق فیلتر کردن نیاز دارد، برای مثال اجرای دستور Select روی جدول Customers برای login هایی که در گروه Employee هستند.
Database-Level Audit Action Groups (گروه اقدامات بازبینی در سطح بانک اطلاعاتی)
این گروه اعمال به کلاسهای رویداد Security Audit شبیه هستند.
Database-Level Audit Actions
اقدامات در سطح بانک اطلاعاتی، اقدامات بازبینی خاصی را به طور مستقیم روی Database، Schema و اشیاء Schema (از قبیل جداول، View ها، رویههای ذخیره شده، توابع و ... ) فراهم میکند. این اقدامات برای فیلدها (Columns) صدق نمیکنند.
Audit-Level Audit Action Groups
شما میتوانید اقداماتی را که در فرآیند Auditing هستند، بازبینی کنید که میتواند در محدوده سرویس دهنده یا بانک اطلاعاتی باشد. در محدوده بانک اطلاعاتی تنها برای database audit specification رخ میدهد.
جهت بررسی بیشتر به این لینک مراجعه شود.