خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از DDL Trigger در SQL Server

استفاده از DDL Trigger در SQL Server
DDL Trigger نوع خاصی از Trigger است که در پاسخ به عبارات DDL فعال می شود. DDL Trigger ها می توانند در دو دامنه باشند:

سیستم یکپارچۀ سازمانی راهکار



Server Level Trigger: با ایجاد Trigger در سرور می توان همه رویدادها را برای همه دیتابیس های روی سرور capture کنید.
Database Level Trigger: این Scope یا محدوده، محدود به یک پایگاه داده واحد است که Trigger بر روی آن ایجاد می شود.

استفاده از DDL Trigger در SQL Server
با استفاده از تابع EVENTDATA می تواند اطلاعات مربوط به رویدادی که آن را اجرا کرده، capture کند. خروجی EVENTDATA در واقع XML است.
Syntax ایجاد Syntax به صورت زیر می باشد:

CREATE TRIGGER triggername

ON { DATABASE | ALL SERVER}

FOR { eventtype | eventgroup }

AS {

--sqlstatement

}

اجازه دهید به یک مثال از DDL Trigger بپردازیم و رویدادهای تغییرات یک جدول از دیتابیس را capture کنیم.
در گام نخست یک جدول در یک دیتابیس مشخص ایجاد می کنیم. هر دیتابیسی را که مدنظر دارید، انتخاب کنید و جدول را در آن ایجاد کنید.

CREATE TABLE table_logs (
log_id INT IDENTITY(1,1) PRIMARY KEY,
event_log XML NOT NULL,
changed_by SYSNAME NOT NULL
)

استفاده از DDL Trigger در SQL Server
اکنون یک DDL trigger ایحاد می کنید تا فعالیتهای جدول را رصد کرده و تغییرات را در جدول table_logs اضافه کند.

CREATE TRIGGER trg_table_changes
ON DATABASE
FOR
CREATE_TABLE,
ALTER_TABLE,
DROP_TABLE
AS
BEGIN
SET NOCOUNT ON ;INSERT INTO table_logs (
event_log,
changed_by
)
VALUES (
EVENTDATA(),
USER
)
END

استفاده از DDL Trigger در SQL Server
حال به اجرای DDL Trigger می پردازیم. ابتدا یک جدول در پایگاه داده ایجاد می کنیم.

Create table tbl_check ( sno int identity(1,1), name varchar(50))

استفاده از DDL Trigger در SQL Server
وقتی یک جدول در پایگاه داده ایجاد می کنید ، یک رویداد create_table اجرا می شود و تغییرات را در جدول table_logs اضافه می کند. همانطور که مشاهده می کنید، فیلد event_log، از نوع XML می باشد و برای مشاهده کامل اطلاعات، کافیست که لینک xml را کلیک کنید. این لاگ ها در یک فرم query editor جدید نمایش داده می شود.

select  * from table_logs

استفاده از DDL Trigger در SQL Server
حالا DDL trigger را در مورد دستور ALTER TABLE بررسی می کنیم. یک تغییر در جدول tbl_check ایجاد می کنیم:

Alter table tbl_check alter column name varchar(30)

استفاده از DDL Trigger در SQL Server
خب، بیایید مقادیر log table را بررسی کنیم و ببینیم آیا یا تغییری که در جدول مذکور داده شد، چیزی رصد شده یا خیر و همانطور که در ذیل مشاهده می کنید، این تغییر هم در جدول table_logs اضافه شده است.

select  * from table_logs

استفاده از DDL Trigger در SQL Server
خب، حالا DDL trigger را در مورد DROP کردن جدول بررسی می کنیم.

Drop table tbl_check

استفاده از DDL Trigger در SQL Server
همانطور که می بینید، یک رکورد دیگر هم برای اجرای دستور Drop table به جدول table_logs اضافه شده است.

select  * from table_logs

استفاده از DDL Trigger در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز