05-21-2018, 11:23 AM
چند روز پیش در محل کار یکی از دوستان که البته مدیر بنده هم هستند به اشتباه فایل پایگاه داده یکی از شرکت ها را پاک کردند.
این مساله باعث شد که دردسر زیادی برای بازیابی دیتا و عملیات سینک و . . . متحمل شویم. بر آن شدیم که راه حلی با تریگر ارائه دهیم.
با استفاده از این تریگر شما می توانید از حذف یک دیتابیس یا پایگاه داده جلوگیری نمایید. این تریگر یک تریگر دیتابیسی می باشد.
به جای عبارت testDB می توانید عنوان پایگاه داده خود را وارد نمایید و به جای عبارت You are not allowed to drop this Database. هم می توانید پیام مورد نظر خود را وارد نمایید.
این مساله باعث شد که دردسر زیادی برای بازیابی دیتا و عملیات سینک و . . . متحمل شویم. بر آن شدیم که راه حلی با تریگر ارائه دهیم.
با استفاده از این تریگر شما می توانید از حذف یک دیتابیس یا پایگاه داده جلوگیری نمایید. این تریگر یک تریگر دیتابیسی می باشد.
کد:
CREATE TRIGGER Prevent_DB_Drop
ON ALL SERVER
FOR DROP_DATABASE
AS
DECLARE @DatabaseName NVARCHAR(100),
@eventData XML
--set the EVENTDATA() functions value to our xml so we can parse it
SET @eventData = EVENTDATA()
SELECT @DatabaseName = @eventData.value('(/EVENT_INSTANCE/DatabaseName)[1]' ,'varchar(128)' )
IF @DatabaseName IN ('testDB')
BEGIN
PRINT 'You are not allowed to drop this Database.'
ROLLBACK;
END
GO
ENABLE TRIGGER [Prevent_DB_Drop] ON ALL SERVER
به جای عبارت testDB می توانید عنوان پایگاه داده خود را وارد نمایید و به جای عبارت You are not allowed to drop this Database. هم می توانید پیام مورد نظر خود را وارد نمایید.