1-mavzu. Ma’lumotlar bazasi obyektlarini yaratish


Baza darajasidagi DDL triggerlar



Download 0,87 Mb.
bet34/48
Sana23.06.2022
Hajmi0,87 Mb.
#694675
1   ...   30   31   32   33   34   35   36   37   ...   48
Bog'liq
мавзулар MBDM

Baza darajasidagi DDL triggerlar
Quyidagi misolda joriy ma`lumotlar bazasiga doirasida ta’sirga ega DDL triggerini qanday yaratish mumkinligi ko`rsatilgan:
USE SampleDb;

GO
CREATE TRIGGER trigger_PreventDrop


ON DATABASE FOR DROP_TRIGGER
AS PRINT 'Pered tem, kak udalit trigger, vы doljnы otklyuchit "trigger_PreventDrop"'
ROLLBACK

Ushbu misoldagi trigger har qanday foydalanuvchiga SampleDb ma`lumotlar bazasidagi biron bir triggerni o'chirishga imkon bermaydi. DATABASE bandi trigger_PreventDrop triggerining ma`lumotlar bazasi darajasidagi trigger ekanligini ko`rsatadi. DROP_TRIGGER kalit so`zi har qanday triggerni o'chirishga imkon bermaydigan oldindan aniqlangan hodisa turini bildiradi.




Server darajasidagi DDL triggerlar
Server darajasidagi triggerlar server tomonidagi hodisalarga javob beradi. Server darajasidagi trigger CREATE TRIGGER instruksiyasidagi ALL SERVER bandidan foydalanib yaratiladi. Trigger bajaradigan amalga qarab, server darajasidagi triggerlarning ikki xil turi mavjud: oddiy DDL triggerlari va tizimga kirish triggerlari. Oddiy DDL triggerlarni ishga tushishi DDL instruksiylari hodisalariga asosida, tizimga kirish triggerlari esa kirish hodisalari asosida chiqariladi.
Quyidagi misol, server darajasida triggerni qanday yaratishni namoyish etadi, bu tizimga kirish triggeri:
USE master;

GO
CREATE LOGIN loginTest WITH PASSWORD = '12345!',


CHECK_EXPIRATION = ON;

GO
GRANT VIEW SERVER STATE TO loginTest;


GO
CREATE TRIGGER trigger_ConnectionLimit


ON ALL SERVER WITH EXECUTE AS 'loginTest'
FOR LOGON AS
BEGIN
IF ORIGINAL_LOGIN()= 'loginTest' AND
(SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 AND
original_login_name = 'loginTest') > 1
ROLLBACK;
END;

Bu yerda avval SQL Server loginTest kirish logini yaratiladi, undan keyin server darajasidagi trigger ishlatiladi. Shu sababli, ushbu login uchun GRANT operatori orqali berilgan VIEW SERVER STATE huquqi bo’lishi kerak. Shundan so'ng trigger_ConnectionLimit trigger yaratiladi. Ushbu trigger LOGON kalit so`zida ko`rsatilgandek kirish triggeridir.


sys.dm_exec_sessions yordamida loginTest loginli foydalanuvchi bilan oldin sessiya o'rnatilganligi tekshiradi. Agar sessiya allaqachon o'rnatilgan bo'lsa, ROLLBACK instruksiyasi bajariladi. Shuning uchun loginTest foydalanuvchi parallel faqat bitta sessiyani o'rnatishi mumkin.

Download 0,87 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   48




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish