1 ။ နိဒါန်း
1.1 ဘာတွေလဲ။ SQL Server တိုးချဲ့ပွဲများလား။
SQL Server Extended Events သည် စီမံခန့်ခွဲသူများနှင့် developer များအား အသေးစိတ်ဆာဗာလုပ်ဆောင်ချက်ဒေတာကို စုဆောင်းခွဲခြမ်းစိတ်ဖြာနိုင်စေသည့် ပေါ့ပါးသောစွမ်းဆောင်ရည်စောင့်ကြည့်ရေးစနစ်တစ်ခုဖြစ်သည်။ ဒီစနစ်ကို ပေါင်းစပ်ထားပါတယ်။ SQL Server ဒေတာဘေ့စ်အင်ဂျင်သည် ပုံမှန်လည်ပတ်မှုများနှင့် ပြဿနာဖြေရှင်းခြင်းဆိုင်ရာ အခြေအနေများကို ကျယ်ကျယ်ပြန့်ပြန့် ထိုးထွင်းသိမြင်စေသည်။
1.2 စောင့်ကြည့်ခြင်းအတွက် တိုးချဲ့ဖြစ်ရပ်များကို အဘယ်ကြောင့် အသုံးပြုသနည်း။
SQL Server Extended Events သည် ဒေတာဘေ့စ်စောင့်ကြည့်ခြင်းနှင့် ပြဿနာဖြေရှင်းခြင်းအတွက် ဆွဲဆောင်မှုရှိသော အကျိုးကျေးဇူးများစွာကို ပေးဆောင်သည်-
- ပေါ့ပါးသော ဗိသုကာလက်ရာဖြင့် စွမ်းဆောင်ရည် အနည်းငယ်သာ သက်ရောက်မှုရှိသည်။
- ဒေတာစုဆောင်းခြင်းနှင့် ဖြစ်ရပ်စစ်ထုတ်ခြင်းအပေါ် အသေးစိတ်ထိန်းချုပ်မှု
- သီးခြားစောင့်ကြည့်မှုလိုအပ်ချက်များနှင့် အံဝင်ခွင်ကျဖြစ်စေနိုင်သော ဒေတာစုဆောင်းမှုကို စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။
- ပက်ကေ့ဂျ်များစွာမှ အဖြစ်အပျက်များကို တစ်ပြိုင်နက် ဖမ်းယူနိုင်စွမ်း
- သက်ဆိုင်ရာ လုပ်ငန်းများကို အာရုံစိုက်ရန် လိုက်လျောညီထွေရှိသော စစ်ထုတ်နိုင်စွမ်း
- အသုံးပြုသူအတွေ့အကြုံကို မထိခိုက်စေဘဲ ထုတ်လုပ်မှုစနစ် စောင့်ကြည့်ခြင်းအတွက် ပံ့ပိုးမှု
- ပြီးပြည့်စုံသော စွမ်းဆောင်ရည်မက်ထရစ်များကို ခြေရာခံခြင်း။
- ပြဿနာရှာဖွေဖြေရှင်းရန်အတွက် အဆင့်မြင့်ရောဂါရှာဖွေရေးစွမ်းရည်များ
- လိုအပ်ချက်များကို လိုက်လျောညီထွေဖြစ်စေရန်အတွက် လမ်းကြောင်းပြုပြင်ထိန်းသိမ်းမှုကို စစ်ဆေးပါ။
- အချိန်နှင့်တပြေးညီ သမိုင်းအချက်အလက် ခွဲခြမ်းစိတ်ဖြာမှု ရွေးချယ်စရာများ
1.3 တိုးချဲ့ဖြစ်ရပ်များနှင့် SQL Server အရည်အသွေး
စဉ် SQL Server အရည်အသွေး သမားရိုးကျစောင့်ကြည့်ရေးကိရိယာတစ်ခုဖြစ်ပြီး MS SQL Extended Events သည် ပိုမိုထိရောက်သောအခြားရွေးချယ်စရာတစ်ခုကိုပေးသည်။ Extended Events များသည် စနစ်ရင်းမြစ်များကို အနည်းငယ်သာ စားသုံးပြီး ထုတ်လုပ်မှုပတ်ဝန်းကျင်အတွက် ပိုမိုကောင်းမွန်သော အရွယ်အစားကို ပေးဆောင်သည်။
SQL Server ပရိုဖိုင်ကို ယခု ရပ်ဆိုင်းလိုက်ပြီး စောင့်ကြည့်ရေး လုပ်ဆောင်ချက်အားလုံးအတွက် တိုးချဲ့လုပ်ဆောင်မှုများသို့ ပြောင်းရွှေ့ရန် Microsoft က အကြံပြုထားသည်။
2. Extended Events Architecture ကို နားလည်ခြင်း။
2.1 Extended Events အင်ဂျင် အစိတ်အပိုင်းများ
Extended Events အင်ဂျင်တွင် အဖြစ်အပျက်ဒေတာကို ဖမ်းယူရန်၊ လုပ်ဆောင်ရန်နှင့် သိမ်းဆည်းရန် အတူတကွလုပ်ဆောင်သည့် အဓိကအစိတ်အပိုင်းများစွာ ပါဝင်ပါသည်။ ဤအစိတ်အပိုင်းများကို နားလည်ခြင်းသည် သင့်အား ထိရောက်သော စောင့်ကြည့်ရေးဖြေရှင်းနည်းများကို ဒီဇိုင်းဆွဲရန် ကူညီပေးပါသည်။
- ပေးပို့သူ- dispatcher အစိတ်အပိုင်းသည် event flow ကို event source မှ Extended Events engine သို့ ညှိနှိုင်းပေးသည်။ ဖြစ်ရပ်တစ်ခု မီးလောင်သောအခါ၊ ပေးပို့သူသည် အကြောင်းကြားချက်ကို လက်ခံရရှိပြီး ၎င်းကို သတ်မှတ်ထားသော ဖြစ်ရပ်အမျိုးအစားသို့ စာရင်းသွင်းထားသည့် တက်ကြွသော ဆက်ရှင်များသို့ လမ်းကြောင်းပေးသည်။
- ကြားခံ: Buffer များသည် ပစ်မှတ်များထံ မရေးသားမီ အဖြစ်အပျက်ဒေတာကို မှတ်ဉာဏ်တွင် ယာယီသိမ်းဆည်းသည်။ ဤ buffering ယန္တရားသည် I/O လုပ်ဆောင်မှုများကို လျှော့ချခြင်းဖြင့် စွမ်းဆောင်ရည်ကို တိုးတက်စေသည်။ Buffer အရွယ်အစားနှင့် စီမံခန့်ခွဲမှုဆက်တင်များကို မှတ်ဉာဏ်အသုံးပြုမှုနှင့် ဒေတာရယူခြင်းလိုအပ်ချက်များကို ဟန်ချက်ညီစေရန် configure လုပ်နိုင်သည်။
- session: session တစ်ခုသည် event monitoring ၏ အတိုင်းအတာကို သတ်မှတ်ပေးသည်။ ၎င်းသည် မည်သည့် event များကို ဖမ်းယူရမည်၊ မည်သည့် action များကို execute လုပ်ရမည်၊ မည်သည့် predicates များကို apply လုပ်ရမည်နှင့် ရလဒ်များကို မည်သည့်နေရာတွင် သိမ်းဆည်းရမည်ကို သတ်မှတ်ပေးသည်။ session များကို သီးခြားစီ ဖန်တီးနိုင်သည်၊ ပြုပြင်နိုင်သည်၊ စတင်နိုင်သည် နှင့် ရပ်တန့်နိုင်သည်။
- ပစ်မှတ် ဖြစ်ရပ်- Target instances များသည် ဖမ်းယူထားသော event data အတွက် storage destination များကို ကိုယ်စားပြုသည်။ session တစ်ခုစီသည် files၊ ring buffers သို့မဟုတ် counters ကဲ့သို့သော targets တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော targets များသို့ ရေးသားနိုင်သည်။ Targets များသည် event information ကို နောက်ပိုင်းတွင် analysis လုပ်ရန်အတွက် process လုပ်ပြီး သိမ်းဆည်းထားသည်။
2.2 ပွဲအစီအစဉ်များ
SQL Server Extended Events သည် လုပ်ဆောင်ချက်များကို package များအဖြစ် စီစဉ်ပေးသည်။ package တစ်ခုချင်းစီတွင် ဆက်စပ်နေသော event များ၊ action များ၊ type များ၊ predicates များနှင့် target များ ပါဝင်သည်။ အသုံးများသော package များတွင် sqlserver၊ sqlos နှင့် package0 တို့ ပါဝင်သည်။
- sqlserver package သည် queries နှင့် transaction များကဲ့သို့ database-specific events များကိုပေးပါသည်။
- sqlos ပက်ကေ့ဂျ်တွင် လည်ပတ်မှုစနစ်ဖြစ်ရပ်များ ပါရှိသည်။
- package0 သည် ပက်ကေ့ဂျ်အားလုံးတွင် အသုံးပြုသည့် ယေဘုယျရည်ရွယ်ချက် လုပ်ဆောင်နိုင်စွမ်းကို ပေးဆောင်သည်။
2.3 ပွဲအမျိုးအစားများနှင့် အကွက်များ
အဖြစ်အပျက်များသည် အတွင်းဖြစ်ပျက်မှုကို ကိုယ်စားပြုသည်။ SQL Server သင်စောင့်ကြည့်လိုသော။ ဖြစ်ရပ်အမျိုးအစားတစ်ခုစီတွင် သက်ဆိုင်ရာအချက်အလက်များကို ဖမ်းယူနိုင်သော ကြိုတင်သတ်မှတ်ထားသော အကွက်များရှိသည်။ ဥပမာအားဖြင့်၊ sql_statement_completed event တွင် ကြာချိန်၊ CPU အချိန်၊ reads နှင့် writes နယ်ပယ်များ ပါဝင်သည်။
အဖြစ်အပျက်များသည် တပြိုင်တည်း သို့မဟုတ် ပြိုင်တူဖြစ်စေနိုင်သည်။ ပြီးမြောက်ပြီးနောက် ထပ်တူကျသော ဖြစ်ရပ်များ မီးလောင်နေစဉ်၊ ဖြစ်ရပ်သွင်ပြင်လက္ခဏာများကို နားလည်ခြင်းက သင့်စောင့်ကြည့်ရေးလိုအပ်ချက်များအတွက် သင့်လျော်သောဖြစ်ရပ်များကို ရွေးချယ်ရန် ကူညီပေးသည်။
လုပ်ဆောင်ချက် ၁၄
လုပ်ဆောင်ချက်များသည် ဖမ်းယူထားသော အဖြစ်အပျက်များသို့ ဖြည့်စွက်အချက်အလက်များကို ထည့်သွင်းပေးသည်။ အဖြစ်အပျက်တစ်ခု ဖြစ်ပေါ်လာသောအခါ၊ SQL စာသား၊ session ID သို့မဟုတ် call stack အချက်အလက်ကဲ့သို့သော အပိုဆောင်းအခြေအနေများကို စုဆောင်းရန် ဆက်စပ်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သည်။
အဖြစ်များသော လုပ်ဆောင်ချက်များတွင် query statements များကို ဖမ်းယူရန် sql_text၊ database ကို ခွဲခြားသတ်မှတ်ရန် database_name နှင့် မူလ server ကို ခြေရာခံရန် client_hostname တို့ ပါဝင်သည်။ လုပ်ဆောင်ချက်များတွင် ပြဿနာရှာဖွေဖြေရှင်းခြင်းနှင့် ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက် မရှိမဖြစ်လိုအပ်သော အကြောင်းအရာများကို ပံ့ပိုးပေးပါသည်။
၄ ပစ်မှတ်များ
ပစ်မှတ်များသည် ဖြစ်ရပ်ဒေတာကို မည်သို့နှင့် မည်သည့်နေရာတွင် သိမ်းဆည်းမည်ကို ဆုံးဖြတ်ပေးသည်။ SQL Server Extended Events သည် အောက်ပါတို့အပါအဝင် ပစ်မှတ်အမျိုးအစားများစွာကို ပံ့ပိုးပေးသည်-
- အသေးစိတ်ခွဲခြမ်းစိတ်ဖြာမှုအတွက် ဒစ်သိုလှောင်မှုအတွက် event_file၊
- Memory-based retention အတွက် ring_buffer သည် မကြာသေးမီက အဖြစ်အပျက်များသို့ အမြန်ဝင်ရောက်ခွင့်ကို ပေးဆောင်သည်။
- ရိုးရိုးရေတွက်ခြင်းအတွက် event_counter
- အုပ်စုဖွဲ့ရန်အတွက် ဟီစတိုဂရမ်
- ဆက်စပ်ဖြစ်ရပ်များအတွက် pair_matching
2.6 ကြိုတင်ခန့်မှန်းချက်များ (စစ်ထုတ်မှုများ)
သတ်မှတ်ထားသော အခြေအနေများအလိုက် အဖြစ်အပျက်များကို စစ်ထုတ်ပြီး ဖမ်းယူထားသော ဒေတာပမာဏကို လျှော့ချသည်။ ဒေတာဘေ့စ်အမည်၊ အပလီကေးရှင်းအမည်၊ စက်ရှင် ID၊ ကြာချိန် ကန့်သတ်ချက်များ သို့မဟုတ် ဖြစ်ရပ်အကွက်တန်ဖိုးတစ်ခုခုဖြင့် စစ်ထုတ်နိုင်သည်။
ထိရောက်သော ကြိုတင်ခန့်မှန်းအသုံးပြုမှုသည် သက်ဆိုင်ရာဖြစ်ရပ်များကိုသာ ရိုက်ကူးခြင်းဖြင့် စွမ်းဆောင်ရည်သက်ရောက်မှုကို လျှော့ချပေးသည်။ ရှုပ်ထွေးသော ကြိုတင်တွက်ဆချက်များသည် တိကျသော စစ်ထုတ်မှုစံနှုန်းများကို ဖန်တီးရန်အတွက် ယုတ္တိအော်ပရေတာများကို အသုံးပြု၍ အခြေအနေများစွာကို ပေါင်းစပ်ထားသည်။
3. Extended Event Session ပြည်နယ်နှင့် Lifecycle
3.1 ကဏ္ဍအလိုက် ပြည်နယ်များ- ဖန်တီးပါ၊ ပြောင်းလဲပါ၊ နှင့် ဖြုတ်ပါ။
Extended Event sessions များသည် မတူညီသောပြည်နယ်များမှတဆင့် တိုးတက်နေသည်-
- CREATE EVENT SESSION ဖော်ပြချက်သည် session အသစ်တစ်ခုကို သတ်မှတ်ပေးသော်လည်း ၎င်းကို မစတင်ပါ။ session သည် ရှင်းလင်းစွာ အသက်သွင်းသည်အထိ ရပ်တန့်ထားသော အခြေအနေတွင် ရှိနေပါသည်။
- ALTER EVENT SESSION ဖော်ပြချက်သည် session configuration ကို ပြုပြင်သည် သို့မဟုတ် stopped နှင့် started ကြားရှိ ၎င်း၏ အခြေအနေကို ပြောင်းလဲသည်။
- DROP EVENT SESSION ထုတ်ပြန်ချက်သည် စက်ရှင်၏ အဓိပ္ပါယ်ဖွင့်ဆိုချက်ကို ဆာဗာမှ လုံးဝဖယ်ရှားပေးပါသည်။
3.2 Session အကြောင်းအရာနှင့် လက္ခဏာများ
session တစ်ခုစီတွင် event များ၊ action များ၊ target များနှင့် predicate များ စုစည်းမှုတစ်ခု ပါဝင်သည်။ session များတွင် ၎င်းတို့၏ scope နှင့် behavior ကို သတ်မှတ်ပေးသည့် implied boundaries များ ပါရှိသည်။ Configuration option များသည် memory allocation၊ event retention နှင့် dispatch latency တို့ကို ထိန်းချုပ်သည်။
session ဝိသေသလက္ခဏာများတွင် ၎င်းတို့သည် server restart များတစ်လျှောက် ဆက်လက်တည်ရှိနေခြင်း ရှိ၊ မရှိ၊ အမြင့်ဆုံး memory allocation နှင့် ၎င်းတို့သည် memory pressure ကို မည်သို့ကိုင်တွယ်ဖြေရှင်းသည်တို့ ပါဝင်သည်။ ဤဆက်တင်များသည် session အပြုအမူနှင့် resource သုံးစွဲမှုကို သိသိသာသာ သက်ရောက်မှုရှိသည်။
3.3 ဆက်ရှင်နယ်နိမိတ်များနှင့် ပက်ကေ့ခ်ျများ
Session နယ်နိမိတ်များသည် event များ၊ target များနှင့် package များအကြား ဆက်နွယ်မှုကို သတ်မှတ်ပေးသည်။ package တစ်ခုမှ event များသည် အခြား package တစ်ခုမှ လုပ်ဆောင်ချက်များကို လှုံ့ဆော်ပေးနိုင်ပြီး data collection strategy များတွင် ပြောင်းလွယ်ပြင်လွယ်ရှိစေပါသည်။
ပက်ကေ့ခ်ျဆက်နွယ်မှုများသည် သင့်အား session တစ်ခုအတွင်း အရင်းအမြစ်များစွာမှ အဖြစ်အပျက်များကို ပေါင်းစပ်နိုင်စေပါသည်။ ဤစွမ်းရည်သည် ကွဲပြားသော ကျယ်ကျယ်ပြန့်ပြန့် စောင့်ကြည့်မှု အခြေအနေများကို ပံ့ပိုးပေးသည်။ SQL Server စနစ်ခွဲများ။
4. SSMS ကို အသုံးပြု၍ Extended Event Sessions ဖန်တီးခြင်း။
4.1 ကြိုတင်လိုအပ်ချက်များနှင့် စနစ်ထည့်သွင်းခြင်း။
မဖန်တီးမီ SQL Server Extended Events sessions တွင် သင့်တွင် သင့်လျော်သော ခွင့်ပြုချက်များရှိကြောင်း သေချာပါစေ။ ဒေတာဘေ့စ်-ကန့်သတ်ဆက်ရှင်များအတွက် ဒေတာဘေ့စ်တွင် ကန့်သတ်ထိန်းချုပ်မှုခွင့်ပြုချက် သို့မဟုတ် ဒေတာဘေ့စ်သတ်မှတ်ထားသော ဆက်ရှင်များအတွက် မည်သည့်ဖြစ်ရပ်မဆို Session ခွင့်ပြုချက် လိုအပ်ပါသည်။
အဲဒါကိုအတည်ပြုပါ SQL Server Management Studio ကို သင့်ပစ်မှတ် instance နှင့် တပ်ဆင်ထားပြီး ချိတ်ဆက်ထားပါသည်။ စောင့်ကြည့်ခြင်းလိုအပ်ချက်များနှင့် ရင်းနှီးကျွမ်းဝင်ပြီး မည်သည့်ဖြစ်ရပ်များနှင့် ပစ်မှတ်များသည် သင့်လိုအပ်ချက်များနှင့် အကိုက်ညီဆုံးဖြစ်သည်ကို ဖော်ထုတ်ပါ။
4.2 Object Explorer ရှိ Extended Events များကို ဝင်ရောက်ကြည့်ရှုခြင်း။
SSMS ရှိ Extended Events အင်တာဖေ့စ်ကို ဝင်ရောက်ရန်၊ ဤအဆင့်များကို လိုက်နာပါ-
- ဖွင့်လှစ် SQL Server Management Studio နဲ့ ချိတ်ဆက်လိုက်ပါ။ SQL Server ဥပမာ။
- Object Explorer တွင် ချဲ့ပါ။ စီမံခန့်ခွဲမှု -> တိုးချဲ့ပွဲများ.
- Extended Events node တွင် ပါရှိသည်။ အစည်းအဝေးများ နှင့် packages သင်၏စောင့်ကြည့်ရေးပုံစံများကို စီမံခန့်ခွဲရန်အတွက် ဖိုင်တွဲများ။
4.3 အပိုင်းအသစ်တစ်ခုဖန်တီးပါ။
စက်ရှင်အသစ်ဖန်တီးရန်-
-
- အဆိုပါပေါ်မှာ Right-click အစည်းအဝေးများ အောက်မှာ folder ကို တိုးချဲ့ပွဲများ.
- ကို Select လုပ်ပါ အပိုင်းအသစ် configuration dialog ကိုဖွင့်ရန်။ အောက်ပါအကြောင်းအရာသည် စက်ရှင်အသစ်တစ်ခုဖန်တီးရန် ဤနည်းလမ်းကို အသုံးပြုပါမည်။
မှတ်ချက်: အဆိုပါ Session Wizard အသစ် ပိုမိုလမ်းညွှန်မှုအတွေ့အကြုံအတွက်လည်း ရရှိနိုင်ပါသည်။
4.3.1 အထွေထွေ စာမျက်နှာ ဖွဲ့စည်းမှု
ထိုတွင် ယေဘုယျ စာမျက်နှာ၊ အခြေခံ စက်ရှင် ဂုဏ်သတ္တိများကို စီစဉ်သတ်မှတ်ပါ-
- Session အမည်ကို အဆိုပါနေရာတွင် ထည့်သွင်းပါ။ ကဏ္ဍအမည် လယ်ကွင်း။ စောင့်ကြည့်ရေး ရည်ရွယ်ချက်ကို ညွှန်ပြသော သရုပ်ဖော်အမည်များကို အသုံးပြုပါ။
- စိတ်ကြိုက်ရွေးချယ်ပါ။ ဆာဗာစတင်ချိန်တွင် ပွဲအစီအစဉ်စတင်ပါ အလိုအလျောက် session activation ကိုဖွင့်ရန်။
- ပုံသေ session template သည် ဗလာဖြစ်သော. ကြိုတင်သတ်မှတ်ထားသော ဖွဲ့စည်းမှုပုံစံကို အသုံးပြုပါက သင်သည် အခြားပုံစံများကို အသုံးပြုနိုင်သည်။
4.3.2 ပွဲများ စာမျက်နှာ တည်ဆောက်ခြင်း။
အဆိုပါ ဖြစ်ရပ်များ စာမျက်နှာသည် သင့်အား စောင့်ကြည့်ရမည့် အဖြစ်အပျက်များကို ရွေးချယ်နိုင်သည်-
- ယင်းကို Select လုပ်ပါ ဖြစ်ရပ်များ ဘယ်ဘက်မှ စာမျက်နှာ စာမျက်နှာတစ်ခုကို ရွေးပါ။ panel က။
- ထဲမှာ ပွဲစာကြည့်တိုက်ရနိုင်သောဖြစ်ရပ်များကိုရှာဖွေပါ သို့မဟုတ် ရှာဖွေမှုလုပ်ဆောင်ချက်ကို အသုံးပြုပါ။
- သက်ဆိုင်ရာဖြစ်ရပ်များကိုရှာဖွေရန် “sql_statement_completed” ကဲ့သို့သော အဓိကစကားလုံးများကို ရိုက်ထည့်ခြင်းဖြင့် အဖြစ်အပျက်များကို စစ်ထုတ်ပါ။
- sql_statement_completed ကဲ့သို့သော အလိုရှိသော ဖြစ်ရပ်ကို ရွေးပါ။
- ဖြစ်ရပ်သို့ ရွှေ့ရန် ညာဘက်မြှားခလုတ်ကို နှိပ်ပါ။ ရွေးချယ်ထားသော ပွဲများ စာရင်းဖြစ်သည်။
4.3.3 ဒေတာသိုလှောင်မှု ဖွဲ့စည်းမှု
အဆိုပါ ဒေတာများသိုလှောင် စာမျက်နှာသည် အဖြစ်အပျက်ဒေတာကို သိမ်းဆည်းသည့်နေရာကို သတ်မှတ်သည်-
- ယင်းကို Select လုပ်ပါ ဒေတာများသိုလှောင် ဘယ်ဘက်မှ စာမျက်နှာ စာမျက်နှာတစ်ခုကို ရွေးပါ။ panel က။
- ထဲမှာ ပစ်မှတ် ဧရိယာ၊ dropdown မှ target အမျိုးအစားကို ရွေးချယ်ပါ။
(1) event_file ပစ်မှတ်
event_file target သည် ဒေတာများကို .xel extension ဖြင့် disk files များတွင် သိမ်းဆည်းသည်-
- ကို Select လုပ်ပါ event_file ပစ်မှတ်အမျိုးအစား dropdown မှ။
- C:\temp\YourSession_Target.xel ကဲ့သို့သော ဖိုင်လမ်းကြောင်းကို သတ်မှတ်ပါ။
- အများဆုံးဖိုင်အရွယ်အစားနှင့် ဖိုင်အရေအတွက်ကို သတ်မှတ်ခြင်းဖြင့် disk space ကို စီမံခန့်ခွဲရန် rollover ရွေးချယ်မှုများကို စီစဉ်သတ်မှတ်ပါ။
- session ရပ်တန့်သွားသည်အထိ သို့မဟုတ် သိုလှောင်မှုကန့်သတ်ချက်ရောက်ရှိသည်အထိ target သည် event များကို အဆက်မပြတ်ရေးသားသည်။
(၂) ring_buffer ပစ်မှတ်
ring_buffer target သည် disk I/O မပါဘဲ အမြန်ဝင်ရောက်နိုင်ရန် မှတ်ဉာဏ်တွင် အဖြစ်အပျက်များကို သိမ်းဆည်းသည်။
- ကို Select လုပ်ပါ ring_buffer ပစ်မှတ်အမျိုးအစားအဖြစ်။
- ကြားခံအတွက် အမြင့်ဆုံးမှတ်ဉာဏ်ခွဲဝေမှုကို စီစဉ်သတ်မှတ်ပါ။
- ကြားခံများ ပြည့်သွားသောအခါ အဟောင်းများကို စွန့်ပစ်လိုက်သည်ကို နားလည်ပြီး ၎င်းသည် မကြာသေးမီက လုပ်ဆောင်ချက်များကို စောင့်ကြည့်ခြင်းအတွက် သင့်လျော်သည်။
(3) event_counter ပစ်မှတ်
event_counter target သည် အသေးစိတ်ဒေတာများကို မသိမ်းဆည်းဘဲ ဖြစ်ရပ်များ ဖြစ်ပွားမှုကို ရိုးရိုးရှင်းရှင်း ရေတွက်ပေးသည်။ ၎င်းသည် ကြိမ်နှုန်းအချက်အလက်ကိုသာ လိုအပ်သည့်အခါတွင် အနည်းဆုံး overhead ကို ပေးစွမ်းသည်။
(၄) ပစ်မှတ် ဟစ်စတိုဂရမ်
ဟစ်စတိုဂရမ်ပစ်မှတ်သည် သတ်မှတ်ထားသော လယ်ကွင်းတန်ဖိုးဖြင့် ပွဲများကို အုပ်စုဖွဲ့ပြီး ဖြန့်ဖြူးမှုစာရင်းအင်းများကို ဖန်တီးပေးသည်။ ၎င်းသည် အဖြစ်များသော ပုံစံများ သို့မဟုတ် မြင့်မားသောကြိမ်နှုန်းတန်ဖိုးများကို ဖော်ထုတ်ရာတွင် အသုံးဝင်သည်။
(၅) စုံတွဲ ကိုက်ညီမှု ပစ်မှတ်
pair_matching ပစ်မှတ်သည် သော့ရယူခြင်းနှင့် လွှတ်ခြင်းကဲ့သို့သော ဆက်စပ်ဖြစ်ရပ်များကို ဆက်စပ်ပေးသည်။ ၎င်းသည် တွဲထားသောလုပ်ဆောင်ချက်များနှင့် ၎င်းတို့၏ အချိန်ကိုက်ဆက်နွယ်မှုများကို ခွဲခြမ်းစိတ်ဖြာနိုင်စေပါသည်။
၄.၂ အဆင့်မြင့်ချိန်ညှိချက်များ
အဆိုပါ အဆင့်မြင့် စာမျက်နှာသည် စက်ရှင်အဆင့် ဖွဲ့စည်းမှုပုံစံ ရွေးချယ်စရာများကို ပေးသည်-
- ယင်းကို Select လုပ်ပါ အဆင့်မြင့် ဘယ်ဘက်မှ စာမျက်နှာ စာမျက်နှာတစ်ခုကို ရွေးပါ။ panel က။
- configure ပွဲထိန်းမုဒ် မှတ်ဉာဏ်ဖိအားအောက်တွင် အဖြစ်အပျက်များကို ကိုင်တွယ်ပုံကို ထိန်းချုပ်ရန်။
- အစုံ အများဆုံးပေးပို့ချိန်ကြာချိန် စနစ်စွမ်းဆောင်ရည်နှင့် အချိန်နှင့်တပြေးညီ လုပ်ဆောင်ခြင်းကို ဟန်ချက်ညီစေရန်။
- configure အများဆုံးမှတ်ဉာဏ်အရွယ်အစား နှင့် အများဆုံးဖြစ်ရပ်အရွယ်အစား သင်၏စောင့်ကြည့်မှုလိုအပ်ချက်များအပေါ်အခြေခံသည်။
- ကို Select လုပ်ပါ Memory Partition မုဒ် တစ်ခုတည်း သို့မဟုတ် များစွာသော CPU ပတ်ဝန်းကျင်များအတွက် အကောင်းဆုံးဖြစ်အောင်လုပ်ရန်။
4.4 ဖြစ်ရပ် စစ်ထုတ်မှုများ ပြင်ဆင်ခြင်း (ကြိုတင်ခန့်မှန်းချက်များ)
တိကျသောစံနှုန်းများအပေါ်အခြေခံ၍ ဖြစ်ရပ်များကို စစ်ထုတ်ခြင်းဖြင့် ဒေတာပမာဏကို လျှော့ချပေးသည်။ စစ်ထုတ်မှုများကို စီစဉ်သတ်မှတ်ရန်-
- ထိုတွင် ဖြစ်ရပ်များ စာမျက်နှာ၊ “sql_statement_completed” ကဲ့သို့ စစ်ထုတ်လိုသော ဖြစ်ရပ်ကို ရွေးပါ။
- ကလစ်နှိပ်ပါ configure ပွဲစီစဉ်မှု ဒိုင်ယာလော့ဂ်ကို ဖွင့်ရန်။
- ယင်းကို Select လုပ်ပါ စစ်ထုတ်ခြင်း (Predicate) tab ကို။
- ထဲမှာ လယ်ယာ dropdown၊ ကြာချိန်ကဲ့သို့သော စစ်ထုတ်ရန် အကွက်ကို ရွေးပါ။
- တစ်ဦးကိုရွေးချယ်ပါ အော်ပရေတာ">" ကဲ့သို့သော၊
- စစ်ထုတ်မှုကို ထည့်သွင်းပါ။ အဘိုး1000000 (1 စက္ကန့်) ကဲ့သို့သော။
- လိုအပ်ပါက အခြေအနေများ ထပ်ထည့်ပါ။
4.5 လုပ်ဆောင်ချက်များနှင့် ပွဲအကွက်များကို ရွေးချယ်ခြင်း။
ပွဲတစ်ခုစီအတွက် စုဆောင်းရမည့်ဒေတာကို သင်ရွေးချယ်နိုင်သည်-
- ထိုတွင် ဖြစ်ရပ်များ စာမျက်နှာ၊ “sql_statement_completed” ကဲ့သို့သော ဒေတာကို ရွေးချယ်လိုသည့် ဖြစ်ရပ်ကို ရွေးချယ်ပါ။
- ကလစ်နှိပ်ပါ configure ပွဲစီစဉ်မှု ဒိုင်ယာလော့ဂ်ကို ဖွင့်ရန်။
- ယင်းကို Select လုပ်ပါ ကမ္ဘာလုံးဆိုင်ရာနယ်ပယ်များ (လုပ်ဆောင်ချက်များ) tab ကို။
- database_name သို့မဟုတ် client_app_name ကဲ့သို့သော ဖြည့်စွက်အချက်အလက်များကို ထည့်သွင်းရန် လုပ်ဆောင်ချက်များကို ရွေးချယ်ပါ။
- အဆိုပါပြန်လည်သုံးသပ်ရန် ပွဲခင်းများ မည်သည့်ကွက်လပ်များကို အလိုအလျောက် ဖမ်းယူသည်ကို ကြည့်ရန် အပိုင်း။
- ဒေတာပမာဏကို လျှော့ချရန် မလိုအပ်သော အကွက်များကို ရှင်းလင်းပါ။
၄.၆ အစည်းအဝေးများ စတင်ခြင်းနှင့် စီမံခန့်ခွဲခြင်း
သင့်ရဲ့ session ကို configure လုပ်ပြီးတဲ့အခါ၊ သင်စတင်ပြီး ၎င်းရဲ့လုပ်ဆောင်ချက်ကို စောင့်ကြည့်နိုင်ပါတယ်-
- ကလစ်နှိပ်ပါ OK session ကိုဖန်တီးရန်။
- Object Explorer တွင်၊ ကိုချဲ့ထွင်ပါ။ အစည်းအဝေးများ သင့်စက်ရှင်အသစ်ကို ကြည့်ရန် ဖိုင်တွဲ။
- စက်ရှင်အမည်ကို ညာကလစ်နှိပ်ပြီး ရွေးချယ်ပါ။ Session စတင်ပါ။ အဖြစ်အပျက်များကို စတင်ရိုက်ကူးရန်။
- တိုက်ရိုက်ဒေတာကြည့်ရှုရန်၊ စက်ရှင်ကို ညာဖက်ကလစ်နှိပ်ပြီး ရွေးချယ်ပါ။ တိုက်ရိုက်ဒေတာကိုကြည့်ပါ။.
- ညာကလစ်နှိပ်ပြီး ရွေးချယ်ခြင်းဖြင့် စက်ရှင်ကို ရပ်ပါ။ Session ရပ်ပါ။.
5. T-SQL ကို အသုံးပြု၍ Extended Event Sessions ဖန်တီးခြင်း။
5.1 အဖြစ်အပျက် Session Syntax ဖန်တီးပါ။
T-SQL ဖြင့် တိုးချဲ့ထားသော ပွဲဆက်ရှင်များကို ဖန်တီးခြင်းသည် တိကျသော ထိန်းချုပ်မှုကို ပေးစွမ်းပြီး အလိုအလျောက် ဖြန့်ကျက်ခြင်းအတွက် scripting ကို ဖွင့်ပေးသည်။ CREATE EVENT SESSION ကြေငြာချက်သည် တိကျသော syntax တည်ဆောက်ပုံနှင့် လိုက်နာသည်။
အခြေခံ syntax တွင် session name၊ event တစ်ခုချင်းစီအတွက် ADD EVENT clause များ၊ storage destinations အတွက် ADD TARGET clause များနှင့် session configuration အတွက် optional WITH clause များ ပါဝင်သည်။
5.2 အခြေခံဖြစ်ရပ် Session ဖန်တီးခြင်း။
အခြေခံအစည်းအဝေးတစ်ခုသည် သီးခြားဖြစ်ရပ်များကို စောင့်ကြည့်ပြီး ရလဒ်များကို ပစ်မှတ်ထံ ရေးသားသည်။ မရှိမဖြစ်လိုအပ်သော အစိတ်အပိုင်းများကို မည်သို့တည်ဆောက်ရမည်ကို ဤတွင်ဖော်ပြထားသည်။
5.2.1 Session အမည်နှင့် ရွေးချယ်စရာများကို သတ်မှတ်ခြင်း။
ဖော်ပြချက်ပါသော အမည်ဖြင့် session တစ်ခု ဖန်တီးခြင်းဖြင့် စတင်ပါ-
CREATE EVENT SESSION [SampleSession] ON SERVER
ON SERVER အပိုဒ်သည် ဒေတာဘေ့စ်ပြောင်းလဲမှုများတစ်လျှောက် ဆက်လက်တည်ရှိနေသည့် ဆာဗာ-နယ်ပယ်အလိုက် ဆက်ရှင်တစ်ခုကို ဖန်တီးပေးသည်။ Azure SQL ဒေတာဘေ့စ်အတွက်၊ database-scoped sessions အတွက် DATABASE ကိုသုံးပါ။
5.2.2 ADD EVENT ဖြင့် ပွဲများကို ပေါင်းထည့်ခြင်း။
ADD EVENT အပိုဒ်ကို အသုံးပြု၍ ရိုက်ကူးရန် အဖြစ်အပျက်များကို ထည့်ပါ-
CREATE EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_statement_completed
၎င်းသည် ပြီးမြောက်သော SQL ထုတ်ပြန်ချက်အားလုံးကို ဖမ်းယူသည်။ နောက်ထပ် ADD EVENT အပိုဒ်များ အပါအဝင် အစီအစဉ်များစွာကို သင်ထည့်နိုင်သည်။
5.2.3 ဖြစ်ရပ် လုပ်ဆောင်ချက်များကို ပြင်ဆင်ခြင်း။
လုပ်ဆောင်ချက်များသည် အစီအစဉ်တစ်ခုစီအတွက် နောက်ထပ်အကြောင်းအရာများကို စုဆောင်းပါသည်။ အစီအစဉ်အမည်ပြီးနောက် ကွင်းအတွင်း လုပ်ဆောင်ချက်များကို ထည့်ပါ-
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)
ဤဥပမာသည် ပြီးမြောက်သည့်ထုတ်ပြန်ချက်တစ်ခုစီအတွက် SQL စာသား၊ ဒေတာဘေ့စ်အမည်နှင့် အသုံးပြုသူအမည်တို့ကို ဖမ်းယူသည်။
5.2.4 ပွဲကြိုခန့်မှန်းချက်များ သတ်မှတ်ခြင်း (WHERE Clause)
ဒေတာပမာဏကို လျှော့ချရန်အတွက် စစ်ထုတ်သည့်ဖြစ်ရပ်များကို ခန့်မှန်းသည်။ ပွဲ၏အဓိပ္ပါယ်ဖွင့်ဆိုချက်အတွင်း WHERE အပိုဒ်ကိုသုံးပါ-
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text)
WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)
ဤသည်မှာ ကြာချိန် 5 စက္ကန့် (5,000,000 မိုက်ခရိုစက္ကန့်) ထက်ကြီးသော ထုတ်ပြန်ချက်များအတွက် စစ်ထုတ်သည်။
၅.၃ ပွဲပစ်မှတ်များထည့်သွင်းခြင်း
ပစ်မှတ်များသည် ဖြစ်ရပ်ဒေတာကို မည်သည့်နေရာတွင် သိမ်းဆည်းထားသည်နှင့် ၎င်းကို မည်သို့စီမံဆောင်ရွက်သည်ကို သတ်မှတ်ပေးသည်။
၅.၃.၁ ပစ်မှတ်ထည့်ရန် ဝါကျဖွဲ့စည်းပုံ
အဖြစ်အပျက်အားလုံးကို သတ်မှတ်ပြီးနောက် ADD TARGET clause ကို အသုံးပြု၍ ပစ်မှတ်များကို ထည့်ပါ။
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel'
)
package0 prefix သည် target သည် base package မှ လာကြောင်း ညွှန်ပြသည်။
၅.၃.၂ ပစ်မှတ် ကန့်သတ်ချက်များကို ပြင်ဆင်သတ်မှတ်ခြင်း
target အမျိုးအစားတစ်ခုစီသည် သီးခြား parameter များကို လက်ခံသည်။ event_file အတွက် filename၊ max_file_size နှင့် max_rollover_files များကို configure လုပ်ပါ-
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel',
max_file_size=(50),
max_rollover_files=(5)
)
ဤဖွဲ့စည်းပုံသည် တစ်ခုချင်းစီကို 50 MB အထိ ဖိုင်များဖန်တီးပေးကာ 5 ဖိုင်အထိ စုစည်းထားသည်။
5.4 စက်ရှင်ရွေးချယ်မှုများနှင့် ဆက်တင်များ
WITH အပိုဒ်သည် အပြုအမူနှင့် အရင်းအမြစ်အသုံးပြုမှုကို ထိန်းချုပ်သည့် စက်ရှင်အဆင့် ရွေးချယ်စရာများကို သတ်မှတ်ပေးသည်။
5.4.1 MAX_MEMORY နှင့် EVENT_RETENTION_MODE
ဖိအားအောက်တွင် မမ်မိုရီခွဲဝေမှုနှင့် ဖြစ်ရပ်ကိုင်တွယ်မှုကို ထိန်းချုပ်ပါ-
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)
EVENT_RETENTION_MODE ရွေးချယ်မှုများတွင် မှတ်ဉာဏ်အသုံးပြုမှု အနည်းဆုံးအတွက် ALLOW_SINGLE_EVENT_LOSS၊ အထွေထွေ အသုံးစရိတ် အသင့်အတင့်အတွက် ALLOW_MULTIPLE_EVENT_LOSS နှင့် စွမ်းဆောင်ရည် သက်ရောက်မှုကို ထိခိုက်စေမည့်အစား ဒေတာ အပြည့်အစုံ ထိန်းသိမ်းမှုအတွက် NO_EVENT_LOSS တို့ ပါဝင်သည်။
5.4.2 MAX_DISPATCH_LATENCY
ပစ်မှတ်များသို့ မရေးသားမီ အဖြစ်အပျက်များ buffer များတွင် ရှိနေနိုင်သည့် အများဆုံးအချိန်ကို သတ်မှတ်ပါ-
WITH (
MAX_DISPATCH_LATENCY=30 SECONDS
)
တန်ဖိုးနိမ့်ခြင်းသည် I/O လုပ်ဆောင်ချက်များ တိုးလာခြင်း၏ ကုန်ကျစရိတ်ဖြင့် အချိန်နှင့်တပြေးညီ ဒေတာများကို ပိုမိုပေးစွမ်းသည်။
5.4.3 MEMORY_PARTITION_MODE
သင်၏ ဟာ့ဒ်ဝဲဖွဲ့စည်းမှုပုံစံအတွက် မှတ်ဉာဏ်ပိုင်းခြားခြင်းကို အကောင်းဆုံးလုပ်ဆောင်ပါ-
WITH (
MEMORY_PARTITION_MODE=PER_CPU
)
ရွေးချယ်စရာများတွင် အပိုင်းလိုက်တစ်ခုတည်းအတွက် NONE၊ NUMA စနစ်များအတွက် PER_NODE နှင့် CPU စနစ်များစွာအတွက် အများဆုံး ကိုက်ညီမှုအတွက် PER_CPU ပါဝင်သည်။
၅.၅ အစည်းအဝေးများ စတင်ခြင်း၊ ရပ်တန့်ခြင်းနှင့် ပြောင်းလဲခြင်း
ALTER EVENT SESSION ထုတ်ပြန်ချက်များမှတဆင့် စက်ရှင်အခြေအနေနှင့် ဖွဲ့စည်းမှုပုံစံကို စီမံပါ။
၅.၅.၁ Start/Stop အတွက် EVENT SESSION ကို ပြောင်းလဲပါ
ဖန်တီးပြီးနောက် session တစ်ခုစတင်ပါ-
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;
လုပ်ဆောင်နေသည့် စက်ရှင်ကို ရပ်လိုက်ပါ-
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;
5.5.2 ရှိပြီးသား ဆက်ရှင်များကို မွမ်းမံခြင်း။
ရပ်ထားစဉ် စက်ရှင်ဖွဲ့စည်းပုံကို ပြင်ဆင်ပါ။ ပွဲများကိုထည့်ပါ-
ALTER EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_batch_completed;
ပွဲများကို ဖယ်ရှားပါ-
ALTER EVENT SESSION [SampleSession] ON SERVER DROP EVENT sqlserver.sql_statement_completed;
5.5.3 ဖြစ်ရပ် ဆက်ရှင်များ ကျဆင်းနေသည်။
DROP EVENT SESSION ဖြင့် စက်ရှင်တစ်ခုကို လုံးလုံးဖယ်ရှားပါ-
DROP EVENT SESSION [SampleSession] ON SERVER;
မကျဆင်းမီ စက်ရှင်ကို ရပ်တန့်ရပါမည်။
၆။ Event Target များနှင့် အသေးစိတ်လုပ်ဆောင်ခြင်း
၆.၁ event_file Target Configuration
event_file target သည် ပြောင်းလွယ်ပြင်လွယ်ရှိသော configuration option များဖြင့် event data အတွက် persistent storage ကို ပေးသည်။
6.1.1 ဖိုင်လမ်းကြောင်းနှင့် အမည်ပေးခြင်းဆိုင်ရာ သဘောတူညီချက်များ
ပွဲဖိုင်များအတွက် လမ်းကြောင်းနှင့် ဖိုင်အမည်အပြည့်အစုံကို သတ်မှတ်ပါ-
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel'
)
Extended Event မှတ်တမ်းဖိုင်များအတွက် .xel တိုးချဲ့မှုကို အသုံးပြုပါ။ သေချာပါစေ။ SQL Server ဝန်ဆောင်မှုအကောင့်တွင် သတ်မှတ်ထားသော လမ်းညွှန်တွင် ရေးသားခွင့်များ ရှိသည်။
6.1.2 ဖိုင်အပြောင်းအရွှေ့နှင့် အရွယ်အစားစီမံခန့်ခွဲမှု
ဒစ်ခ်နေရာလွတ်ကို စီမံခန့်ခွဲရန် အလိုအလျောက် ဖိုင်အလှည့်အပြောင်းကို စီစဉ်သတ်မှတ်ပါ-
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel',
max_file_size=(50),
max_rollover_files=(10)
)
ဖိုင်တစ်ခုသည် 50 MB သို့ရောက်ရှိသောအခါ၊ SQL Server Extended Events သည် တိုးမြှင့်ထားသော နောက်ဆက်တွဲဖြင့် ဖိုင်အသစ်ကို ဖန်တီးသည်။ 10 ဖိုင်သို့ရောက်ရှိပြီးနောက်၊ အဟောင်းဆုံးဖိုင်ကို overwrite လုပ်သည်။
6.1.3 ဖြစ်ရပ်ဖိုင်ဒေတာကို ဖတ်ခြင်း။
sys.fn_xe_file_target_read_file လုပ်ဆောင်ချက်ကို အသုံးပြု၍ event file data ကို query လုပ်ပါ-
SELECT
event_data,
file_name,
file_offset
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
သင်္ကေတပုံစံသည် စက်ရှင်နှင့်ဆက်စပ်နေသော ဖိုင်အားလုံးကို ဖတ်သည်။
၆.၂ ring_buffer ပစ်မှတ်အသုံးပြုမှု
ring_buffer target သည် မကြာသေးမီက လှုပ်ရှားမှုများကို အမြန်ဝင်ရောက်ကြည့်ရှုနိုင်ရန်အတွက် အဖြစ်အပျက်များကို မှတ်ဉာဏ်တွင် သိမ်းဆည်းသည်။
6.2.1 Memory-Based Event Storage
မမ်မိုရီအခြေခံသိုလှောင်မှုအတွက် ring_buffer ကို စီစဉ်သတ်မှတ်ပါ-
ADD TARGET package0.ring_buffer
စက်ရှင်အသက်ဝင်နေချိန်တွင်သာ ပွဲများကို ဆက်လက်အသုံးပြုနိုင်ပါသည်။ SQL Server လည်ပတ်နေပါသည်။ session ရပ်တန့်သွားသောအခါ သို့မဟုတ် server ပြန်လည်စတင်သောအခါ ဒေတာ ဆုံးရှုံးသွားပါသည်။
6.2.2 Buffer Size နှင့် Configuration
လက်စွပ်ကြားခံအတွက် မမ်မိုရီခွဲဝေမှုကို ထိန်းချုပ်ပါ-
ADD TARGET package0.ring_buffer(
SET max_memory=(4096)
)
Memory ကို KB တွင် သတ်မှတ်ပါ။ ကြားခံပြည့်သွားသောအခါ FIFO ချဉ်းကပ်နည်းကို အသုံးပြု၍ ဖြစ်ရပ်ဟောင်းများကို ဖယ်ပစ်သည်။
6.2.3 Querying Ring Buffer Data
DMVs များမှတဆင့် ring ကြားခံဒေတာကို ရယူသုံးနိုင်သည်-
SELECT
CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer';
target_data တွင် XML-ဖော်မတ်ဖြင့် event အချက်အလက်ပါဝင်သည်။
၆.၃ event_counter ပစ်မှတ်
event_counter target သည် အသေးစိတ်ဒေတာသိမ်းဆည်းမှုမပါဘဲ ရိုးရှင်းသောရေတွက်မှုကို ပေးစွမ်းသည်။
ADD TARGET package0.event_counter
ဤပစ်မှတ်သည် အထွေထွေကုန်ကျစရိတ်အနည်းဆုံးဖြင့် ဖြစ်ရပ်ကြိမ်နှုန်းကို ခြေရာခံပြီး အရေးကြီးသော အရေအတွက်ကိုသာ စောင့်ကြည့်ရာတွင် အသုံးဝင်ပါသည်။
၆.၄ ပစ်မှတ် ဟစ်စတိုဂရမ်
Histogram ပစ်မှတ်သည် field values များအလိုက် event များကို အုပ်စုဖွဲ့သည်-
ADD TARGET package0.histogram(
SET filtering_event_name=N'sqlserver.sql_statement_completed',
source_type=0,
source=N'database_name'
)
ဤဖွဲ့စည်းမှုပုံစံသည် ဒေတာဘေ့စ်များတစ်လျှောက် ဖြစ်ရပ်များ ပျံ့နှံ့မှုကိုပြသသည့် ဟစ်စတိုဂရမ်တစ်ခု ဖန်တီးပေးသည်။
၆.၅ စုံတွဲ_ကိုက်ညီမှု ပစ်မှတ်
pair_matching target သည် lock acquisitions ကဲ့သို့သော ဆက်စပ်ဖြစ်ရပ်များနှင့် releases များကို ဆက်စပ်ပေးသည်-
ADD TARGET package0.pair_matching(
SET begin_event=N'sqlserver.lock_acquired',
end_event=N'sqlserver.lock_released',
begin_matching_columns=N'resource_type',
end_matching_columns=N'resource_type'
)
၎င်းသည် တွဲဖက်လုပ်ဆောင်မှုများနှင့် ၎င်းတို့၏ကြာချိန်များကို ခွဲခြမ်းစိတ်ဖြာနိုင်စေသည်။
7. Extended Events Data ကို ကြည့်ရှုခြင်းနှင့် ခွဲခြမ်းစိတ်ဖြာခြင်း။
7.1 တိုက်ရိုက်ဒေတာကြည့်ရှုရန် SSMS ကိုအသုံးပြုခြင်း။
SQL Server Management Studio သည် Extended Events ဒေတာကို အချိန်နှင့်တပြေးညီ ကြည့်ရှုရန်အတွက် graphical interface ကို ပံ့ပိုးပေးသည်-
- Object Explorer တွင် ချဲ့ပါ။ စီမံခန့်ခွဲမှု -> တိုးချဲ့ပွဲများ -> အစည်းအဝေးများ.
- သင်၏အသက်ဝင်သောစက်ရှင်ကို ညာဖက်ကလစ်နှိပ်ပါ။
- ကို Select လုပ်ပါ တိုက်ရိုက်ဒေတာကိုကြည့်ပါ။ တိုက်ရိုက်ဒေတာကြည့်ရှုသူကိုဖွင့်ရန်။
- အဖြစ်အပျက်များသည် ၎င်းတို့ ဖြစ်ပေါ်လာသည်နှင့်အမျှ ဇယားကွက်တွင် ပေါ်လာသည်။
- အသေးစိတ်အကွက်ရှိ အသေးစိတ်အကွက်တန်ဖိုးများကိုကြည့်ရှုရန် ဖြစ်ရပ်တစ်ခုချင်းစီကို နှိပ်ပါ။
- သီးခြားဖြစ်ရပ်အမျိုးအစားများ သို့မဟုတ် အကွက်တန်ဖိုးများကို အာရုံစိုက်ရန် ကိရိယာဘား စစ်ထုတ်မှုများကို အသုံးပြုပါ။
7.2 T-SQL ဖြင့် Event File Data များကို မေးမြန်းခြင်း။
T-SQL queries သည် ဖမ်းယူထားသော ဖြစ်ရပ်ဒေတာကို လိုက်လျောညီထွေဖြစ်အောင် ခွဲခြမ်းစိတ်ဖြာပေးပါသည်။
၇.၂.၁ sys.fn_xe_file_target_read_file လုပ်ဆောင်ချက်
ဤစနစ်လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ဖြစ်ရပ်ဖိုင်ဒေတာကို ဖတ်ပါ-
SELECT
object_name AS EventName,
CAST(event_data AS XML) AS EventData,
file_name,
file_offset,
timestamp_utc
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
လုပ်ဆောင်ချက်သည် XML ဖော်မက်လုပ်ထားသည့် အသေးစိတ်အချက်အလက်များဖြင့် ပွဲတစ်ခုလျှင် အတန်းတစ်တန်းကို ပြန်ပေးသည်။
7.2.2 XML ဖြစ်ရပ်ဒေတာကို ခွဲခြမ်းစိတ်ဖြာခြင်း။
XML ဖြစ်ရပ်ဒေတာမှ သီးခြားတန်ဖိုးများကို ထုတ်ယူပါ-
SELECT
event_data.value('(event/@name)[1]', 'VARCHAR(50)') AS EventName,
event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS Timestamp,
event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
event_data.value('(event/data[@name="statement"]/value)[1]', 'VARCHAR(MAX)') AS Statement
FROM (
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
) AS EventData;
XQuery expressions များသည် XML တည်ဆောက်ပုံမှ တစ်ဦးချင်းစီ အကွက်တန်ဖိုးများကို ထုတ်ယူသည်။
7.2.3 ပွဲဒေတာကို ဇယားများအဖြစ် ပြောင်းခြင်း။
ပွဲဒေတာများမှ တည်ဆောက်ထားသော ရလဒ်အစုံများကို ဖန်တီးပါ-
WITH EventData AS (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
)
SELECT
EventXML.value('(event/@name)[1]', 'VARCHAR(100)') AS EventName,
EventXML.value('(event/data[@name="cpu_time"]/value)[1]', 'BIGINT') AS CPUTime,
EventXML.value('(event/data[@name="physical_reads"]/value)[1]', 'BIGINT') AS PhysicalReads,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM EventData;
7.3 Querying Ring Buffer Data
ring_buffer ပစ်မှတ်များမှ ဒေတာကို ထုတ်ယူပါ-
SELECT
n.value('(@name)[1]', 'VARCHAR(50)') AS EventName,
n.value('(@timestamp)[1]', 'DATETIME2') AS Timestamp,
n.value('(data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
n.value('(action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('//event') AS q(n);
7.4 တိုးချဲ့ဖြစ်ရပ်များအတွက် စနစ်ကြည့်ရှုမှုများ
SQL Server Extended Event sessions များကို စီမံခန့်ခွဲခြင်းနှင့် စောင့်ကြည့်ခြင်းအတွက် DMVs နှင့် catalog views အများအပြားကို ပံ့ပိုးပေးပါသည်။
7.4.1 sys.server_event_sessions
ဆာဗာတွင် သိမ်းဆည်းထားသော စက်ရှင်၏ သတ်မှတ်ချက်များကို ကြည့်ပါ-
SELECT
name,
event_retention_mode_desc,
max_dispatch_latency,
max_memory,
max_event_size,
memory_partition_mode_desc
FROM sys.server_event_sessions;
ဤကတ်တလောက်မြင်ကွင်းသည် သတ်မှတ်ထားသော ဆက်ရှင်အားလုံးအတွက် ဖွဲ့စည်းမှုအသေးစိတ်အချက်အလက်များကို ပြသသည်။
7.4.2 sys.dm_xe_sessions
လက်ရှိအသုံးပြုနေသည့် ဆက်ရှင်များကိုကြည့်ပါ-
SELECT
name,
create_time,
total_regular_buffers,
regular_buffer_size,
total_large_buffers,
large_buffer_size
FROM sys.dm_xe_sessions;
ဤ DMV သည် အသက်ဝင်သော တိုးချဲ့ထားသော အဖြစ်အပျက် ဆက်ရှင်များအကြောင်း ပြေးချိန်အချက်အလက်ကို ပေးပါသည်။
၇.၄.၃ sys.dm_xe_session_targets
တက်ကြွသော အစည်းအဝေးများနှင့် ဆက်စပ်နေသော ပစ်မှတ်များကို ကြည့်ရှုပါ-
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
t.execution_duration_ms
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
7.4.4 အခြားအသုံးဝင်သော DMV များ
ထပ်လောင်းကြည့်ရှုမှုများသည် ပြည့်စုံသော ဆက်ရှင်အချက်အလက်များကို ပေးဆောင်သည်-
- sys.dm_xe_session_events- တက်ကြွသော ဆက်ရှင်များတွင် ဖြစ်ရပ်များကို စာရင်းပြုစုပါ။
- sys.dm_xe_session_event_actions- စက်ရှင်ဖြစ်ရပ်များအတွက် ပြင်ဆင်ထားသော လုပ်ဆောင်ချက်များကို ပြသည်
- sys.dm_xe_objects: ရရှိနိုင်သော ပွဲများ၊ လုပ်ဆောင်ချက်များနှင့် ပစ်မှတ်များအားလုံးကို ကတ်တလောက်လုပ်သည်။
- sys.dm_xe_object_columns- အစီအစဉ်အမျိုးအစားတစ်ခုစီအတွက် ရရှိနိုင်သော အသေးစိတ်အကွက်များ
- sys.dm_xe_packages- Extended Event packages အားလုံးကို စာရင်းပြုစုသည်။
8. လက်တွေ့အသုံးပြုမှု ဖြစ်ရပ်များနှင့် ဥပမာများ
8.1 စောင့်ကြည့်ခြင်း SQL ထုတ်ပြန်ချက် အကောင်အထည်ဖော်မှု
SQL ထုတ်ပြန်ချက်ကို လိုက်နာခြင်းအား ခြေရာခံခြင်းသည် မေးမြန်းမှုပုံစံများနှင့် စွမ်းဆောင်ရည်လက္ခဏာများကို ထိုးထွင်းသိမြင်စေသည်။
8.1.1 sql_statement_completed ဖြစ်ရပ်များကို ခြေရာခံခြင်း။
ပြီးပြည့်စုံသော SQL ထုတ်ပြန်ချက်များကို စောင့်ကြည့်ရန် စက်ရှင်တစ်ခု ဖန်တီးပါ-
CREATE EVENT SESSION [QueryMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.client_hostname,
sqlserver.username
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryMonitoring.xel',
max_file_size=(100),
max_rollover_files=(5)
)
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
STARTUP_STATE=OFF
);
ALTER EVENT SESSION [QueryMonitoring] ON SERVER STATE = START;
8.1.2 Database သို့မဟုတ် Application ဖြင့် စစ်ထုတ်ခြင်း။
တိကျသောဒေတာဘေ့စ်များ သို့မဟုတ် အပလီကေးရှင်းများအပေါ် အာရုံစိုက်ပါ-
CREATE EVENT SESSION [AppSpecificMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.client_app_name)
WHERE (
[sqlserver].[database_name] = N'YourDatabase'
AND [sqlserver].[client_app_name] LIKE N'YourApplication%'
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\AppMonitoring.xel'
);
8.2 Deadlock အချက်အလက်ကို ဖမ်းယူခြင်း။
Deadlock ခွဲခြမ်းစိတ်ဖြာမှု ကွဲလွဲနေသော ငွေပေးငွေယူများဆိုင်ရာ အသေးစိတ်အချက်အလက်များကို ဖမ်းယူရန် လိုအပ်သည်။
8.2.1 xml_deadlock_report ဖြစ်ရပ်
ပြီးပြည့်စုံသော deadlock ဂရပ်များကိုဖမ်းယူရန် စက်ရှင်တစ်ခုဖန်တီးပါ-
CREATE EVENT SESSION [DeadlockMonitoring] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Deadlocks.xel'
)
WITH (STARTUP_STATE=ON);
ALTER EVENT SESSION [DeadlockMonitoring] ON SERVER STATE = START;
8.2.2 Deadlock ဂရပ်ဖစ်များကို ပိုင်းခြားစိတ်ဖြာခြင်း။
Deadlock အချက်အလက်ကို ထုတ်ယူပြီး ခွဲခြမ်းစိတ်ဖြာပါ
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS DeadlockTime,
EventXML.query('.') AS DeadlockGraph
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\Deadlocks*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'xml_deadlock_report';
Deadlock ဂရပ်တွင် လုပ်ငန်းစဉ်များ၊ အရင်းအမြစ်များနှင့် သားကောင်ရွေးချယ်ခြင်းဆိုင်ရာ အသေးစိတ်အချက်များ ပါဝင်ပါသည်။
8.3 ခြေရာခံမေးမြန်းမှု စွမ်းဆောင်ရည် ပြဿနာများ
ကြာချိန်နှင့် အရင်းအမြစ်သုံးစွဲမှု မက်ထရစ်များကို အသုံးပြု၍ မေးမြန်းမှု ညံ့ဖျင်းမှုကို ဖော်ထုတ်ပါ။
8.3.1 ကာလရှည်ကြာ လုပ်ဆောင်နေသော မေးခွန်းကို ထောက်လှမ်းခြင်း။
သတ်မှတ်ထားသော ကြာချိန်သတ်မှတ်ချက်ထက်ကျော်လွန်သည့် မေးခွန်းများကို ဖမ်းယူပါ-
CREATE EVENT SESSION [LongRunningQueries] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.plan_handle
)
WHERE ([duration] > 5000000) -- 5 seconds in microseconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\LongQueries.xel'
);
8.3.2 အကောင်အထည်ဖော်မှု အစီအစဉ် ခွဲခြမ်းစိတ်ဖြာခြင်း။
စွမ်းဆောင်ရည်ခွဲခြမ်းစိတ်ဖြာမှုအတွက် မေးမြန်းမှုအစီအစဉ်များကို ဖမ်းယူပါ-
CREATE EVENT SESSION [QueryPlans] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan(
ACTION(
sqlserver.sql_text,
sqlserver.database_name
)
WHERE ([duration] > 10000000) -- 10 seconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryPlans.xel',
max_file_size=(200)
);
8.4 အကောင့်ဝင်ခြင်းနှင့် လုံခြုံရေးဖြစ်ရပ်များကို စောင့်ကြည့်ခြင်း။
လုံခြုံရေးစစ်ဆေးမှုအတွက် အထောက်အထားစိစစ်ခြင်းနှင့် ခွင့်ပြုချက်လုပ်ဆောင်မှုများကို ခြေရာခံပါ။
8.4.1 အကောင့်ဝင်ခြင်း အောင်မြင်ခြင်းနှင့် ပျက်ကွက်ခြင်း ခြေရာခံခြင်း။
အောင်မြင်သည်နှင့် မအောင်မြင်သော အကောင့်ဝင်ရန် ကြိုးပမ်းမှုများကို စောင့်ကြည့်ပါ-
CREATE EVENT SESSION [LoginMonitoring] ON SERVER
ADD EVENT sqlserver.login(
ACTION(
sqlserver.client_hostname,
sqlserver.client_app_name
)
),
ADD EVENT sqlserver.login_failed(
ACTION(
sqlserver.client_hostname
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Logins.xel'
)
WITH (STARTUP_STATE=ON);
8.4.2 ခွင့်ပြုချက် ပြောင်းလဲမှုများ
လုံခြုံရေးခွင့်ပြုချက်မွမ်းမံမှုများကို ခြေရာခံပါ-
CREATE EVENT SESSION [SecurityChanges] ON SERVER
ADD EVENT sqlserver.server_principal_management_event,
ADD EVENT sqlserver.database_principal_management_event,
ADD EVENT sqlserver.database_permission_change_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SecurityAudit.xel'
);
8.5 ဒေတာဘေ့စ်-အဆင့် စောင့်ကြည့်လေ့လာခြင်း။
ဒေတာဘေ့စ်- သီးခြားလုပ်ဆောင်မှုများနှင့် အခြေအနေပြောင်းလဲမှုများကို စောင့်ကြည့်ပါ။
8.5.1 ဖြစ်ရပ်များကို အရန်သိမ်းပြီး ပြန်လည်ရယူပါ။
အရန်သိမ်းခြင်းနှင့် ပြန်လည်ရယူခြင်း လုပ်ငန်းများကို ခြေရာခံပါ-
CREATE EVENT SESSION [BackupMonitoring] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace,
ADD EVENT sqlserver.databases_backup_restore_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\BackupRestore.xel'
);
8.5.2 ဒေတာဘေ့စ်အခြေအနေ ပြောင်းလဲမှုများ
ဒေတာဘေ့စ်ပြည်နယ် ကူးပြောင်းမှုများကို စောင့်ကြည့်ပါ-
CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER ADD EVENT sqlserver.database_started, ADD EVENT sqlserver.database_stopped ADD TARGET package0.ring_buffer;
8.6 ဒေတာဘေ့စ် အကျင့်ပျက်ခြစားမှုနှင့် သမာဓိရှိမှု ပြဿနာများကို ရှာဖွေခြင်း။
SQL Server Extended Events သည် ပြဿနာများ ကြီးထွားမလာမီ အလားအလာရှိသော ဒေတာဘေ့စ် အကျင့်ပျက်ခြစားမှုကို ရှာဖွေတွေ့ရှိရန် ကြိုတင်သတိပေးနိုင်စွမ်းကို ပေးဆောင်ထားပြီး၊
8.6.1 အကျင့်ပျက်ခြစားမှုကို ထောက်လှမ်းခြင်းအတွက် အဓိကဖြစ်ရပ်များ
ဖြစ်ရပ်များစွာသည် အကျင့်ပျက်ခြစားမှု သို့မဟုတ် I/O ပြဿနာများ ဖြစ်နိုင်ကြောင်း အချက်ပြသည်။
8.6.1.1 အမှား_အရေးကြီးသောအမှားများအတွက် ဖြစ်ရပ်ကို အစီရင်ခံထားသည်။
error_reported event သည် အားလုံးကိုဖမ်းယူပါသည်။ SQL Server အကျင့်ပျက်ခြစားမှုဆိုင်ရာ အမှားနံပါတ်များအပါအဝင် အမှားအယွင်းများ-
ADD EVENT sqlserver.error_reported(
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825, 832, 855, 856)
)
)
အမှား 823 သည် I/O အမှားများကို ညွှန်ပြသည်၊ 824 သည် ယုတ္တိညီညွတ်မှု အမှားများကို ညွှန်ပြပြီး 825 သည် ဟာ့ဒ်ဝဲပြဿနာများကို ညွှန်ပြနိုင်သည့် ဟာ့ဒ်ဝဲပြဿနာများကို ညွှန်ပြနိုင်သည့် ဖတ်ရှု-စမ်းခြင်း အောင်မြင်မှုများကို အစီရင်ခံသည်။
8.6.1.2 database_suspect_data_page ဖြစ်ရပ်
ဒီအဖြစ်အပျက်က မီးလောင်လိုက်တာ SQL Server သံသယစာမျက်နှာကိုတွေ့သည်
ADD EVENT sqlserver.database_suspect_data_page
သံသယစာမျက်နှာများသည် အကျင့်ပျက်ခြစားမှု ဖြစ်နိုင်ချေကို ညွှန်ပြပြီး msdb.dbo.suspect_pages ဇယားတွင် မှတ်တမ်းတင်ထားသည်။
8.6.1.3 errorlog_written ဖြစ်ရပ်
ရေးထားသော စာများကို ရိုက်ယူပါ။ SQL Server အမှားမှတ်တမ်း-
ADD EVENT sqlserver.errorlog_written(
WHERE ([severity] >= (16))
)
8.6.2 အကျင့်ပျက်ခြစားမှု စောင့်ကြည့်ရေးကဏ္ဍကို ဖန်တီးခြင်း။
အဂတိလိုက်စားမှုကို ထောက်လှမ်းခြင်းနှင့် စောင့်ကြည့်ခြင်းအတွက် ပြီးပြည့်စုံသော အစည်းအဝေးတစ်ရပ်ကို ဖွဲ့စည်းပါ။
8.6.2.1 အကျင့်ပျက်ခြစားမှု အမှားအတွက် စစ်ထုတ်ခြင်း နံပါတ်များ (823၊ 824၊ 825)
အဂတိလိုက်စားမှုညွှန်းကိန်းများကို အဓိကထားသည့် ပစ်မှတ်ထားအစည်းအဝေးတစ်ခု ဖန်တီးပါ-
CREATE EVENT SESSION [CorruptionDetection] ON SERVER
ADD EVENT sqlserver.error_reported(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
WHERE (
[error_number] IN (823, 824, 825, 832, 855, 856)
OR [severity] >= (20)
)
),
ADD EVENT sqlserver.database_suspect_data_page(
ACTION(
sqlserver.database_name
)
)
8.6.2.2 သင့်လျော်သော ပြင်းထန်မှုအဆင့်များကို သတ်မှတ်ခြင်း။
အကျင့်ပျက်ခြစားမှုကို ညွှန်ပြနိုင်သည့် ပြင်းထန်သော အမှားအယွင်းများ ပါဝင်သည်-
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825)
)
ပြင်းထန်မှု 20 နှင့်အထက်သည် အကျင့်ပျက်ခြစားမှုနှင့် ဆက်နွှယ်လေ့ရှိသည့် စနစ်အဆင့်ပြဿနာများကို ညွှန်ပြသည်။
၈.၆.၂.၃ သတိပေးချက်များအတွက် Event File Target ကို configure လုပ်ခြင်း
ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် သတိပေးခြင်းအတွက် အကျင့်ပျက်ခြစားမှုဖြစ်ရပ်များကို သိမ်းဆည်းပါ-
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\CorruptionMonitoring.xel',
max_file_size=(50),
max_rollover_files=(10)
)
WITH (
STARTUP_STATE=ON,
MAX_DISPATCH_LATENCY=5 SECONDS
);
ALTER EVENT SESSION [CorruptionDetection] ON SERVER STATE = START;
8.6.3 အကျင့်ပျက်ခြစားမှု ဖြစ်ရပ်ဒေတာကို ဆန်းစစ်ခြင်း။
ဖမ်းယူထားသော ဒေတာများမှ အဂတိလိုက်စားမှုဆိုင်ရာ ဖြစ်ရပ်များကို ထုတ်ယူပြီး ဘာသာပြန်ဆိုပါ။
8.6.3.1 သံသယစာမျက်နှာများကို ဖော်ထုတ်ခြင်း။
database_suspect_data_page ဖြစ်ရပ်များအတွက် မေးမြန်းချက်-
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS EventTime,
EventXML.value('(event/data[@name="database_id"]/value)[1]', 'INT') AS DatabaseID,
EventXML.value('(event/data[@name="file_id"]/value)[1]', 'INT') AS FileID,
EventXML.value('(event/data[@name="page_id"]/value)[1]', 'BIGINT') AS PageID,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'database_suspect_data_page';
8.6.3.2 အမှားအသေးစိတ်နှင့် အကြောင်းအရာကို ဖြည်ခြင်း။
အကျင့်ပျက်ခြစားမှုပုံစံများအတွက် error_reported ဖြစ်ရပ်များကို ပိုင်းခြားစိတ်ဖြာပါ-
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS ErrorTime,
EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') AS ErrorNumber,
EventXML.value('(event/data[@name="severity"]/value)[1]', 'INT') AS Severity,
EventXML.value('(event/data[@name="message"]/value)[1]', 'VARCHAR(MAX)') AS ErrorMessage,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'error_reported'
AND EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') IN (823, 824, 825);
8.6.4 DBCC CHECKDB နှင့် ပေါင်းစည်းခြင်း။
လမ်းညွှန်ရန် Extended Events ဒေတာကို အသုံးပြုပါ။ DBCC စစ်ဆေးရန် ကွပ်မျက်။
8.6.4.1 ဖြစ်ရပ်များအပေါ်အခြေခံ၍ DBCC CHECKDB ကို အစပျိုးခြင်း
အကျင့်ပျက်ခြစားမှုဖြစ်ရပ်များကို တွေ့ရှိသောအခါ၊ ပြီးပြည့်စုံသောအတည်ပြုချက်အတွက် DBCC CHECKDB ကို လုပ်ဆောင်ပါ-
-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Extended Events သည် DBCC CHECKDB သည် စေ့စေ့စပ်စပ်အတည်ပြုချက်ကို လုပ်ဆောင်နေချိန်တွင် အစောပိုင်းသတိပေးချက်ကို ပံ့ပိုးပေးပါသည်။
8.6.4.2 အလိုအလျောက် အကျင့်ပျက်ခြစားမှု တုံ့ပြန်မှု အလုပ်အသွားအလာများ
အဖြစ်အပျက်ဖိုင်ကို စောင့်ကြည့်ခြင်းဖြင့် အလိုအလျောက်တုံ့ပြန်မှုများကို အကောင်အထည်ဖော်ပါ-
- configure SQL Server အဂတိလိုက်စားမှုစောင့်ကြည့်ရေးကိစ္စဖိုင်ကို အခါအားလျော်စွာ စုံစမ်းမေးမြန်းရန် အေးဂျင့်အလုပ်။
- အကျင့်ပျက်ခြစားမှုဖြစ်ရပ်များကို တွေ့ရှိသောအခါ၊ ထိခိုက်သည့်ဒေတာဘေ့စ်ပေါ်တွင် DBCC CHECKDB ကို လုပ်ဆောင်ပါ။
- ပွဲအသေးစိတ်နှင့် DBCC CHECKDB ရလဒ်များနှင့်အတူ DBA သို့ အီးမေးလ်သတိပေးချက်များ ပေးပို့ပါ။
- တွေ့ရှိချက်များကို လမ်းကြောင်းသစ်ခွဲခြမ်းစိတ်ဖြာရန်အတွက် ဗဟိုမှစောင့်ကြည့်ရေးဇယားသို့ မှတ်တမ်းတင်ပါ။
8.6.4.3 စွမ်းဆောင်ရည်ဖြင့် ဟန်ချက်ညီစွာ စောင့်ကြည့်လေ့လာခြင်း။
Extended Events သည် မကြာခဏ DBCC CHECKDB ကွပ်မျက်ခြင်းနှင့် နှိုင်းယှဉ်ပါက နိမ့်ကျသော အကျင့်ပျက်ခြစားမှုကို သိရှိနိုင်သည်-
- အချိန်နှင့်တပြေးညီ အကျင့်ပျက်ခြစားမှုကို သိရှိနိုင်ရန် တိုးချဲ့ထားသော အစီအစဉ်များကို စဉ်ဆက်မပြတ် လုပ်ဆောင်ပါ။
- အကျင့်ပျက်ခြစားမှု အညွှန်းများ ပေါ်လာမှသာ DBCC CHECKDB ကို လုပ်ဆောင်ပါ။
- ပြုပြင်ထိန်းသိမ်းမှုပြတင်းပေါက်များအတွင်း ပုံမှန် DBCC CHECKDB ကို အချိန်ဇယားဆွဲပါ။
- မည်သည့်ဒေတာဘေ့စ်များကိုချက်ချင်းအာရုံစိုက်ရန်လိုအပ်သည်ကိုသိရှိရန် Extended Events ကိုသုံးပါ။
ဤနည်းလမ်းသည် စဉ်ဆက်မပြတ်ခိုင်မာမှုစစ်ဆေးမှုများ၏ သိသာထင်ရှားသောအရင်းအမြစ်သုံးစွဲမှုမရှိဘဲ တက်ကြွစွာစောင့်ကြည့်ခြင်းကို ပံ့ပိုးပေးပါသည်။
8.6.4.4 ပျက်စီးနေသော ဒေတာဘေ့စ်ကို ပြုပြင်ခြင်း။
ဒေတာဘေ့စ်တွင် အကျင့်ပျက်ခြစားမှုများ တွေ့ရှိပါက၊ သင်သည် DBCC CHECKDB ကို အသုံးပြု၍ အသေးစား အကျင့်ပျက်ခြစားမှုများကို ပြင်ဆင်နိုင်သည်။ အဆင်မပြေပါက ပြင်ပအဖွဲ့အစည်းကို စမ်းကြည့်နိုင်ပါသည်။ SQL ဒေတာဘေ့စ်ပြန်လည်ရယူရေးကိရိယာယေဘုယျအားဖြင့် ဆိုးရွားစွာ ယိုယွင်းပျက်စီးနေသော ဒေတာဘေ့စ်များပေါ်တွင် ပြန်လည်ရယူမှုနှုန်း ပိုမိုမြင့်မားစေသည်။
9. Server-Scoped vs Database-Scoped Extended Events
9.1 Server-Scoped Event Sessions
Server-scoped sessions တစ်ခုလုံး၏ လုပ်ဆောင်ချက်ကို စောင့်ကြည့်သည်။ SQL Server ဥပမာ။ ဤဆက်ရှင်များကို ON SERVER အပိုဒ်ဖြင့် ဖန်တီးထားပြီး မာစတာဒေတာဘေ့စ်တွင် ဆက်လက်တည်ရှိနေပါသည်။
CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\ServerWide.xel'
);
Server-scoped sessions များသည် databases အားလုံးမှ အဖြစ်အပျက်များကို ဖမ်းယူနိုင်ပြီး instance-level monitoring အတွက် သင့်လျော်ပါသည်။
9.2 Database-Scoped Event Sessions (Azure SQL Database)
Database-scoped sessions များကို database တစ်ခုတည်းတွင် ကန့်သတ်ထားပြီး server-level access ကို ကန့်သတ်ထားသည့် Azure SQL Database တွင် အဓိကအားဖြင့် အသုံးပြုသည်-
CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'DatabaseMonitoring.xel'
);
Azure SQL Database တွင်၊ ဖြစ်ရပ်ဖိုင်များကို ဒေသတွင်းဖိုင်စနစ်များထက် Azure Blob Storage တွင် သိမ်းဆည်းထားသည်။
9.3 ကွဲပြားမှုများနှင့် အသုံးပြုမှုကိစ္စများ
Server-scoped sessions များသည် databases အားလုံးတွင် ကျယ်ကျယ်ပြန့်ပြန့် စောင့်ကြည့်မှုကို ပေးစွမ်းသော်လည်း မြင့်မားသော ခွင့်ပြုချက်များ လိုအပ်ပါသည်။ Database-scoped sessions များသည် သီးခြားခွဲထုတ်ခြင်းကို ပေးစွမ်းပြီး သီးခြား application များ သို့မဟုတ် ငှားရမ်းသူများကို စောင့်ကြည့်သည့်အခါ သင့်လျော်ပါသည်။
ဒေတာဘေ့စ်များတစ်လျှောက် စွမ်းဆောင်ရည်ဆိုင်ရာ ပြဿနာဖြေရှင်းခြင်းနှင့် လုံခြုံရေးစစ်ဆေးမှုများအတွက် ဗဟိုချုပ်ကိုင်မှုရှိသော စက်ရှင်များကို အသုံးပြုပါ။ Azure SQL ဒေတာဘေ့စ်၊ များစွာသော ငှားရမ်းနေထိုင်သည့် ပတ်ဝန်းကျင်များတွင် ဒေတာဘေ့စ်သတ်မှတ်ထားသော ဆက်ရှင်များကို သုံးပါ သို့မဟုတ် စောင့်ကြည့်ရေးတာဝန်များကို အပလီကေးရှင်းအဖွဲ့များသို့ လွှဲအပ်သည့်အခါ။
10. Azure SQL ဒေတာဘေ့စ်ရှိ တိုးချဲ့ဖြစ်ရပ်များ
10.1 Azure-Specific ထည့်သွင်းစဉ်းစားချက်များ
Azure SQL ဒေတာဘေ့စ်သည် ပရဝုဏ်အတွင်းမှ ခြားနားချက်အချို့ဖြင့် တိုးချဲ့ဖြစ်ရပ်များကို အကောင်အထည်ဖော်သည်။ SQL Server. Sessions များသည် မူရင်းအားဖြင့် ဒေတာဘေ့စ်ကို ကန့်သတ်ထားပြီး အဖြစ်အပျက်ဖိုင်သိမ်းဆည်းမှုသည် ဒေသတွင်းဖိုင်စနစ်များထက် Azure Blob Storage ကို အသုံးပြုသည်။
Azure Blob Storage ကို အထောက်အထားစိစစ်ခြင်းသည် event file target အတွင်း configure လုပ်ထားသော SAS token တစ်ခု လိုအပ်သည်။ Connection strings များသည် event files များသိမ်းဆည်းထားသည့် storage account နှင့် container ကို ရည်ညွှန်းပါသည်။
၁၀.၂ Azure တွင် ရရှိနိုင်သော Target များ
Azure SQL Database သည် ဤ Extended Event target များကို ပံ့ပိုးပေးသည်-
- event_file- Azure Blob Storage သို့ စာရေးပါ။
- ring_buffer- ပရဝုဏ်အတွင်းနှင့် တူညီသော အပြုအမူဖြင့် မမ်မိုရီအခြေခံသိုလှောင်မှု
- event_counter- ဖြစ်ရပ်ဖြစ်ရပ်များကို ရေတွက်သည်။
event_file target သည် Azure Blob Storage အထောက်အထားများဖြင့် ပြင်ဆင်သတ်မှတ်ရန် လိုအပ်သည်-
ADD TARGET package0.event_file(
SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)
10.3 Database-Scoped Sessions ဖန်တီးခြင်း။
Azure SQL Database တွင် session တစ်ခုဖန်တီးပါ-
CREATE EVENT SESSION [AzureMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB);
ALTER EVENT SESSION [AzureMonitoring] ON DATABASE STATE = START;
Azure ရှိ Database-scoped sessions များသည် server-scoped sessions များနှင့် ဆင်တူသော်လည်း လက်ရှိ database တွင် ကန့်သတ်ထားသော အတိုင်းအတာဖြင့် လုပ်ဆောင်သည်။
11. အကောင်းဆုံး အလေ့အကျင့်များနှင့် စွမ်းဆောင်ရည် ပိုမိုကောင်းမွန်အောင် ပြုလုပ်ခြင်း။
11.1 စွမ်းဆောင်ရည် ထိခိုက်မှုကို လျှော့ချခြင်း။
Extended Events များသည် အကျုံးဝင်မှုအနည်းဆုံးအတွက် ဒီဇိုင်းထုတ်ထားသော်လည်း မသင့်လျော်သောဖွဲ့စည်းမှုပုံစံများသည် စွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှုရှိနိုင်သည်။ ဤလမ်းညွှန်ချက်များကို လိုက်နာပါ-
- အရာအားလုံးကိုဖမ်းယူခြင်းထက် ဖြစ်ရပ်များကို စစ်ထုတ်ရန် တိကျသောကြိုတင်ခန့်မှန်းချက်များကို အသုံးပြုပါ။
- လုပ်ငန်းစဉ်အပေါ်တွင် ပေါင်းထည့်သည့် မလိုအပ်သော လုပ်ဆောင်ချက်များကို စုဆောင်းခြင်းမှ ရှောင်ကြဉ်ပါ။
- အချက်အလက်ထိန်းသိမ်းမှုလိုအပ်ချက်များအပေါ် အခြေခံ၍ သင့်လျော်သောပစ်မှတ်များကို ရွေးချယ်ပါ
- ကျိုးကြောင်းဆီလျော်သော ကြားခံအရွယ်အစားများနှင့် ဖြန့်ကျက်ချိန်နေချိန်များကို သတ်မှတ်ပါ။
- DMV များကို အသုံးပြု၍ စက်ရှင်အရင်းအမြစ်သုံးစွဲမှုကို စောင့်ကြည့်ပါ။
11.2 မှန်ကန်သောဖြစ်ရပ်များနှင့် စစ်ထုတ်မှုများကို ရွေးချယ်ခြင်း။
သင်၏ စောင့်ကြည့်ရေး ရည်မှန်းချက်များကို တိုက်ရိုက်ဖြေရှင်းသည့် ဖြစ်ရပ်များကို ရွေးချယ်ပါ။ မလိုအပ်ဘဲ ကြိမ်နှုန်းမြင့်သော ဖြစ်ရပ်များကို ရှောင်ကြဉ်ပြီး ဒေတာပမာဏကို လျှော့ချရန်အတွက် ကြိုတင်ခန့်မှန်းချက်များကို အမြဲအသုံးပြုပါ။
ဥပမာအားဖြင့်၊ sql_statement_completed events အားလုံးကို ဖမ်းယူမည့်အစား၊ သီးခြားဒေတာဘေ့စ်များ သို့မဟုတ် ကြာချိန်သတ်မှတ်ချက်များအတွက် စစ်ထုတ်ပါ။
WHERE (
[sqlserver].[database_name] = N'ProductionDB'
AND [duration] > 1000000
)
၁၁.၃ ပစ်မှတ်ရွေးချယ်ရေးလမ်းညွှန်ချက်များ
သင့်ရဲ့ ခွဲခြမ်းစိတ်ဖြာမှု လိုအပ်ချက်တွေအပေါ် အခြေခံပြီး ပစ်မှတ်တွေကို ရွေးချယ်ပါ-
- အသေးစိတ်သမိုင်းဆိုင်ရာခွဲခြမ်းစိတ်ဖြာမှုနှင့်ရေရှည်ထိန်းသိမ်းမှုအတွက် event_file ကိုအသုံးပြုပါ။
- I/O သက်ရောက်မှု အနည်းဆုံးဖြင့် အချိန်နှင့်တပြေးညီ စောင့်ကြည့်မှုအတွက် ring_buffer ကို အသုံးပြုပါ။
- အကြိမ်ရေ အရေးကြီးသောအခါတွင် event_counter ကိုသုံးပါ။
- ဖြန့်ဖြူးမှုခွဲခြမ်းစိတ်ဖြာမှုအတွက် histogram ကိုသုံးပါ။
- ဆက်စပ်ဖြစ်ရပ်ခွဲခြမ်းစိတ်ဖြာမှုအတွက် pair_matching ကိုသုံးပါ။
11.4 ကဏ္ဍပြင်ဆင်မှု အကြံပြုချက်များ
သင့်လျော်သော အရင်းအမြစ်ကန့်သတ်ချက်များဖြင့် ဆက်ရှင်များကို စီစဉ်သတ်မှတ်ပါ-
- မျှော်လင့်ထားသည့် ဖြစ်ရပ်ပမာဏနှင့် ဆာဗာရင်းမြစ်များအပေါ် အခြေခံ၍ MAX_MEMORY သတ်မှတ်ပါ။
- အခြေအနေအများစုတွင် အနည်းဆုံး အထွေထွေကုန်ကျစရိတ်အတွက် ALLOW_SINGLE_EVENT_LOSS ကို အသုံးပြုပါ။
- စွမ်းဆောင်ရည်နှင့် အချိန်နှင့်တပြေးညီ လိုအပ်ချက်များကို ဟန်ချက်ညီစေရန် MAX_DISPATCH_LATENCY ကို သတ်မှတ်ပါ။
- ပရိုဆက်ဆာစနစ်များပေါ်တွင် PER_CPU မှတ်ဉာဏ်ပိုင်းခြားခြင်းကို အသုံးပြုပါ။
- စဉ်ဆက်မပြတ် စောင့်ကြည့်ရန် မလိုအပ်ပါက STARTUP_STATE=ON ကို ရှောင်ကြဉ်ပါ
11.5 ဖြစ်ရပ်ဖိုင်အရွယ်အစားနှင့် ထိန်းသိမ်းခြင်းကို စီမံခန့်ခွဲခြင်း။
အကန့်အသတ်မဲ့ ဒစ်ခ်အသုံးပြုမှုကို တားဆီးရန် ဖိုင်အလှည့်အပြောင်းကို စီစဉ်သတ်မှတ်ပါ-
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Session.xel',
max_file_size=(100),
max_rollover_files=(10)
)
ဤဖွဲ့စည်းပုံသည် ခန့်မှန်းခြေအားဖြင့် ပွဲဒေတာ 1 GB (10 ဖိုင် × 100 MB) ကို ထိန်းသိမ်းထားသည်။ သင်၏ထိန်းသိမ်းမှုလိုအပ်ချက်များနှင့် ရရှိနိုင်သောသိုလှောင်မှုအပေါ်အခြေခံ၍ ချိန်ညှိပါ။
12. တိုးချဲ့ထားသော ဖြစ်ရပ်များကို ပြဿနာဖြေရှင်းခြင်း။
12.1 အဖြစ်များသော ပြဿနာများနှင့် ဖြေရှင်းချက်များ
အဖြစ်များသော Extended Events ပြဿနာများတွင် session များ ဒေတာမဖမ်းယူနိုင်ခြင်း၊ စွမ်းဆောင်ရည် ကျဆင်းခြင်း၊ ဖိုင်ပစ်မှတ်ပြဿနာများနှင့် မမျှော်လင့်ထားသော session အပြုအမူများ ပါဝင်သည်။
12.2 စက်ရှင် ဒေတာကို မဖမ်းယူပါ။
အကယ်၍ စက်ရှင်တစ်ခုသည် မျှော်လင့်ထားသည့်ဖြစ်ရပ်များကို မဖမ်းမိပါက-
- sys.dm_xe_sessions ကို အသုံးပြု၍ session စတင်ပြီးဖြစ်ကြောင်း အတည်ပြုပါ။
- ဖြစ်ရပ်အားလုံးကို စစ်ထုတ်ခြင်းမပြုရန် ကြိုတင်ခန့်မှန်းချက်များကို စစ်ဆေးပါ။
- စစ်ထုတ်မှုများကို ယာယီဖယ်ရှားခြင်းဖြင့် ပွဲများ စတင်နေကြောင်း အတည်ပြုပါ။
- စက်ရှင်ဒေတာကို ကြည့်ရှုခွင့်ရှိမရှိ သေချာစေရန် ခွင့်ပြုချက်များကို ပြန်လည်သုံးသပ်ပါ။
- ပစ်မှတ်ဖွဲ့စည်းပုံ မှန်ကန်ကြောင်းနှင့် ရေးသားနိုင်ကြောင်း စစ်ဆေးပါ။
SELECT name, create_time FROM sys.dm_xe_sessions WHERE name = 'YourSessionName';
12.3 စွမ်းဆောင်ရည် ကျဆင်းခြင်း။
Extended Events များသည် စွမ်းဆောင်ရည် ပြဿနာများ ဖြစ်စေပါက-
- ပွဲပမာဏကို လျှော့ချရန် ကြိုတင်ခန့်မှန်းချက်များကို ထည့်ပါ။
- နောက်ဆက်တွဲဒေတာများကို စုဆောင်းသည့် မလိုအပ်သော လုပ်ဆောင်ချက်များကို ဖယ်ရှားပါ။
- ရေးသည့်အကြိမ်ရေကို လျှော့ချရန် MAX_DISPATCH_LATENCY ကို တိုးပါ။
- EVENT_RETENTION_MODE ကို ALLOW_SINGLE_EVENT_LOSS သို့ ပြောင်းပါ။
- ကြိမ်နှုန်းမြင့်သောဖြစ်ရပ်များအတွက် event_file အစား ring_buffer ကိုအသုံးပြုရန်စဉ်းစားပါ။
၁၂.၄ ဖိုင်ပစ်မှတ်ပြဿနာများ
ဖိုင်ပစ်မှတ်ပြဿနာများသည် ခွင့်ပြုချက်များ သို့မဟုတ် ဒစ်ခ်နေရာနှင့် မကြာခဏ ဆက်စပ်နေတတ်သည်။
- အတည်ပြုပါ SQL Server ဝန်ဆောင်မှုအကောင့်တွင် ပစ်မှတ်လမ်းညွှန်သို့ ရေးသားခွင့်ပြုချက်များရှိသည်။
- လုံလောက်သော ဒစ်ခ်နေရာ ရရှိနိုင်ကြောင်း သေချာပါစေ။
- သတ်မှတ်ထားသော လမ်းကြောင်း ရှိ၊ မရှိ စစ်ဆေးပါ။
- ဖိုင်များသည် မျှော်လင့်ထားသည့်အတိုင်း လည်ပတ်နေခြင်းမဟုတ်ပါက ဖိုင်အလှည့်ကျဖွဲ့စည်းပုံကို ပြန်လည်သုံးသပ်ပါ။
12.5 စနစ်မြင်ကွင်းများဖြင့် အမှားရှာပြင်ခြင်း။
Extended Events ပြဿနာများကို စစ်ဆေးရန် DMVs ကိုသုံးပါ-
-- Check session status
SELECT s.name, s.create_time, s.total_regular_buffers, s.total_large_buffers
FROM sys.dm_xe_sessions AS s;
-- View session targets and their status
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
CAST(t.target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
-- Check for dropped events
SELECT s.name, s.dropped_event_count, s.dropped_buffer_count
FROM sys.dm_xe_sessions AS s;
13. အဆင့်မြင့်အကြောင်းအရာများ
13.1 စိတ်ကြိုက်ဖြစ်ရပ် ပက်ကေ့ခ်ျများ ဖန်တီးခြင်း။
အဆင့်မြင့်အသုံးပြုသူများသည် သက်တမ်းတိုးရန် စိတ်ကြိုက်ဖြစ်ရပ် ပက်ကေ့ဂျ်များကို ဖန်တီးနိုင်သည်။ SQL Server Extended Events လုပ်ဆောင်ချက်။ ၎င်းသည် C++ ဖွံ့ဖြိုးတိုးတက်မှုနှင့် ပေါင်းစပ်မှုတို့ လိုအပ်သည်။ SQL Server extensibility မူဘောင်။
စိတ်ကြိုက်ပက်ကေ့ဂျ်များသည် အပလီကေးရှင်းအလိုက် ဖြစ်ရပ်များကို စောင့်ကြည့်ခြင်း သို့မဟုတ် ပြင်ပမှ စောင့်ကြည့်ရေးစနစ်များကို တိုးချဲ့ထားသော ဖြစ်ရပ်များ အခြေခံအဆောက်အအုံဖြင့် ပေါင်းစပ်ခြင်းတို့ကို လုပ်ဆောင်နိုင်သည်။
13.2 ပွဲဆက်ရှင် ပုံစံများ
SSMS သည် ဘုံစောင့်ကြည့်မှုအခြေအနေများအတွက် built-in ပုံစံများကို ပံ့ပိုးပေးသည်။ wizard မှတဆင့် session အသစ်များဖန်တီးသောအခါ templates ကိုဝင်ရောက်ကြည့်ရှုပါ-
- New Session dialog တွင်၊ ကိုနှိပ်ပါ။ template ကျသည်။
- Query Detail Tracking သို့မဟုတ် System Health ကဲ့သို့သော ရရှိနိုင်သော နမူနာများမှ ရွေးချယ်ပါ။
- သင်၏ သီးခြားလိုအပ်ချက်များနှင့် ကိုက်ညီစေရန် နမူနာပုံစံကို ပြင်ဆင်ပါ။
13.3 စောင့်ကြည့်စစ်ဆေးခြင်းဖြေရှင်းချက်များနှင့် ပေါင်းစပ်ခြင်း။
Extended Events ဒေတာသည် လုပ်ငန်းစောင့်ကြည့်ခြင်းဆိုင်ရာ ဖြေရှင်းချက်များကို ကျွေးမွေးနိုင်သည်-
- ဖြစ်ရပ်ဒေတာကို ဗဟိုချုပ်ကိုင်သော မှတ်တမ်းစနစ်များသို့ တင်ပို့ပါ။
- ဖြစ်ရပ်ဖိုင်များကို ခွဲခြမ်းစိပ်ဖြာပြီး စောင့်ကြည့်ဒေတာဘေ့စ်များထဲသို့ ဒေတာကို တင်ပါ။
- BI ကိရိယာများကို အသုံးပြု၍ စိတ်ကြိုက် ဒက်ရှ်ဘုတ်များ ဖန်တီးပါ။
- သီးခြားဖြစ်ရပ်ပုံစံများပေါ်အခြေခံ၍ သတိပေးချက်များကို အစပျိုးပါ။
- ဆက်စပ်မှု SQL Server အက်ပလီကေးရှင်းနှင့် အခြေခံအဆောက်အအုံ တိုင်းတာမှုများပါရှိသော ဖြစ်ရပ်များ
13.4 အလိုအလျောက်စနစ်နှင့် အချိန်ဇယားဆွဲခြင်း။
Extended Events စီမံခန့်ခွဲမှုကို အသုံးပြု၍ အလိုအလျောက်လုပ်ပါ။ SQL Server အကျိုးဆောင်:
- သတ်မှတ်ထားသော အချိန်ဘောင်များအတွင်း အစည်းအဝေးများ စတင်/ရပ်တန့်ရန် အလုပ်များ ဖန်တီးပါ
- ဖြစ်ရပ်ဖိုင်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် အစီရင်ခံခြင်းတို့ကို အချိန်ဇယားဆွဲပါ။
- ဖြစ်ရပ်ဖိုင်ဟောင်းများကို သိမ်းဆည်းခြင်း သို့မဟုတ် ဖျက်ခြင်းဖြင့် ဒေတာထိန်းသိမ်းမှုမူဝါဒများကို အကောင်အထည်ဖော်ပါ။
- စွမ်းဆောင်ရည်ပြဿနာများ သို့မဟုတ် လုံခြုံရေးဆိုင်ရာ ဖြစ်ရပ်များကဲ့သို့ တွေ့ရှိထားသော အခြေအနေများကို အလိုအလျောက်တုံ့ပြန်ပါ။
14. Migration from SQL Server အရည်အသွေး
14.1 SQL Server Profiler Events မှ Extended Events Mapping
Microsoft သည် အကြားတွင် မြေပုံဆွဲပေးသည်။ SQL Server အရည်အသွေး ဖြစ်ရပ်များနှင့် တိုးချဲ့ဖြစ်ရပ်များ။ ယေဘူယျမြေပုံများ ပါဝင်သည်-
- SQL:BatchCompleted -> sql_batch_ပြီးပါပြီ။
- SQL:BatchStarting -> sql_batch_starting
- SQL:StmtCompleted -> sql_statement_ပြီးပါပြီ။
- SQL:StmtStarting -> sql_statement_starting
- Deadlock Graph -> xml_deadlock_report
- စာရင်းစစ်ဝင်ရောက်ခြင်း -> လော့ဂ်အင်
- စာရင်းစစ် Logout -> ထွက်လိုက်ပါ။
14.2 သဲလွန်စ အဓိပ္ပါယ်ဖွင့်ဆိုချက်များကို ပြောင်းခြင်း။
ရှိပြီးသားကိုပြောင်းပါ။ SQL Server ပရိုဖိုင်းသည် တူညီသော ဖြစ်ရပ်များကို ခွဲခြားသတ်မှတ်ပြီး သင့်လျော်သော ကြိုတင်သတ်မှတ်မှုများကို ပြင်ဆင်ခြင်းဖြင့် တိုးချဲ့ထားသော အဖြစ်အပျက်များကို ခြေရာခံသည်။ SSMS သည် ဘုံဘာသာပြန်များအတွက် အကူအညီပေးပါသည်။
ခြေရာခံစစ်ထုတ်မှုများကို ပြန်လည်သုံးသပ်ပြီး ၎င်းတို့ကို တိုးချဲ့ဖြစ်ရပ်များ ကြိုတင်ခန့်မှန်းချက်များအဖြစ် ပြောင်းလဲပါ။ Extended Events ရှိ လုပ်ဆောင်ချက်များသည် ခြေရာခံကော်လံများမှ အစားထိုးသည်။ SQL Server Profiler
14.3 စွမ်းဆောင်ရည် နှိုင်းယှဉ်မှု
Extended Events များထက် သိသိသာသာ ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်ကို ပေးစွမ်းသည်။ SQL Server Profiler Benchmark လေ့လာမှုများအရ Extended Events များသည် CPU လည်ပတ်မှုနည်းပါးပြီး ငွေပေးငွေယူပမာဏအပေါ် သက်ရောက်မှုနည်းပါးကြောင်း ပြသသည်။
Extended Events သည် အပြိုင်အဆိုင်လုပ်ဆောင်ခြင်းနှင့် အကောင်းဆုံးမှတ်ဉာဏ်စီမံခန့်ခွဲမှုကို အသုံးပြုနေစဉ်၊ SQL Server ပရိုဖိုင်းသည် ခြေရာခံလုပ်ဆောင်ခြင်း မပြီးမချင်း ပိတ်ဆို့ထားသည့် တစ်ပြိုင်နက်တည်း ဖြစ်ရပ်ရိုက်ကူးမှုအပေါ် အားကိုးသည်။
15 ။ ကောက်ချက်
15.1 အဓိက သဘောတရားများ အကျဉ်းချုပ်
SQL Server Extended Events သည် စောင့်ကြည့်ခြင်းနှင့် ပြဿနာဖြေရှင်းခြင်းအတွက် အားကောင်းပြီး ပေါ့ပါးသော မူဘောင်ကို ပံ့ပိုးပေးပါသည်။ SQL Server။ ဗိသုကာတွင် သက်ဆိုင်ရာ server activity ကို ဖမ်းယူရန် အတူတကွ လုပ်ဆောင်သော event များ၊ action များ၊ predicates များ၊ target များနှင့် session များ ပါဝင်သည်။
ad-hoc ပြဿနာရှာဖွေဖြေရှင်းခြင်းနှင့် အလိုအလျောက်စောင့်ကြည့်ခြင်း နှစ်မျိုးလုံးအတွက် ပြောင်းလွယ်ပြင်လွယ်ရှိမှုကို ပေးစွမ်းသည့် SSMS သို့မဟုတ် T-SQL ကို အသုံးပြု၍ session များကို ဖန်တီးနိုင်ပါသည်။ ring_buffer ဖြင့် အချိန်နှင့်တပြေးညီ စောင့်ကြည့်ခြင်းမှသည် event_file ဖြင့် သမိုင်းဝင် ခွဲခြမ်းစိတ်ဖြာခြင်းအထိ ကွဲပြားသော ခွဲခြမ်းစိတ်ဖြာမှု ချဉ်းကပ်မှုများကို ပံ့ပိုးပေးပါသည်။
Extended Events များနှင့် နှိုင်းယှဉ်ပါက ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်ကို ပေးဆောင်ပါသည်။ SQL Server ပိုမိုပြည့်စုံသော စောင့်ကြည့်ရေးစွမ်းရည်များကို ပံ့ပိုးပေးနေစဉ် ပရိုဖိုင်း။ စနစ်သည် ဒေတာဘေ့စ်စီမံခန့်ခွဲသူများနှင့် ဆော့ဖ်ဝဲအင်ဂျင်နီယာများအား ပြဿနာများကို ရှာဖွေဖော်ထုတ်ရန်၊ စွမ်းဆောင်ရည်ကို အကောင်းဆုံးဖြစ်အောင်၊ လုံခြုံရေးကို မြှင့်တင်ရန်နှင့် လိုက်နာမှုကို ထိန်းသိမ်းနိုင်စေပါသည်။
15.2 နောက်အဆင့်များနှင့် နောက်ထပ်အရင်းအမြစ်များ
သင့်အား ဆက်လက်တိုးတက်စေရန် SQL Server XEvents ကျွမ်းကျင်မှု-
- လက်ဆင့်ကမ်းအတွေ့အကြုံရရှိရန် စမ်းသပ်ပတ်ဝန်းကျင်တွင် တိုးချဲ့ထားသော ဖြစ်ရပ်များကို အကောင်အထည်ဖော်ပါ။
- အဖြစ်အပျက် ကက်တလောက်များ အပြည့်အစုံနှင့် အသေးစိတ် အထားအသို ကိုးကားမှုအတွက် Microsoft စာရွက်စာတမ်းကို ပြန်လည်သုံးသပ်ပါ။
- ပါဝင္ရန္ SQL Server အခြားသူများ၏ အတွေ့အကြုံများမှ သင်ယူရန် အသိုင်းအဝိုင်းဖိုရမ်များ
- စိတ်ကြိုက်ပက်ကေ့ဂျ်များနှင့် စောင့်ကြည့်ရေးပလက်ဖောင်းများနှင့် ပေါင်းစည်းခြင်းကဲ့သို့သော အဆင့်မြင့်အခြေအနေများကို စူးစမ်းပါ။
- အဖြစ်များသော စောင့်ကြည့်ရေး အခြေအနေများအတွက် session template များ စုစည်းထားသော library တစ်ခု တီထွင်ပါ
16 အမေးအဖြေကဏ္ဍ
Q: ဘာတွေလဲ။ SQL Server တိုးချဲ့ပွဲများလား။
A: SQL Server Extended Events သည် ပေါ့ပါးသော စွမ်းဆောင်ရည် စောင့်ကြည့်ရေးစနစ်သို့ ပေါင်းစပ်ထားသည်။ SQL Server ဆာဗာလုပ်ဆောင်မှုများအကြောင်းအသေးစိတ်အချက်အလက်များကို ပမာဏအနည်းငယ်မျှသာ ဖမ်းယူပေးသော ဒေတာဘေ့စ်အင်ဂျင်။
မေး- Extended Events နဲ့ ဘယ်လိုကွာခြားလဲ။ SQL Server Profiler လား?
A- Extended Events များသည် ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်၊ အနိမ့်ပိုင်းနှင့် ဖွဲ့စည်းမှုပုံစံများထက် ပိုမိုကောင်းမွန်အောင် ပံ့ပိုးပေးပါသည်။ SQL Server Profiler SQL Server ပရိုဖိုင်ကို ရပ်ဆိုင်းထားပြီး စောင့်ကြည့်ခြင်းလုပ်ငန်းအားလုံးအတွက် Extended Events ကို အသုံးပြုရန် Microsoft က အကြံပြုထားသည်။
Q: Extended Events အကျိုးသက်ရောက်မှုရှိနိုင်ပါသလား။ SQL Server စွမ်းဆောင်ရည်
A- သင့်လျော်သော ကြိုတင်ခန့်မှန်းမှုများနှင့် အရင်းအမြစ်ကန့်သတ်ချက်များဖြင့် မှန်ကန်စွာ ပြင်ဆင်သတ်မှတ်သောအခါ၊ တိုးချဲ့ထားသော အစီအစဉ်များသည် စွမ်းဆောင်ရည် အနည်းငယ်သာ သက်ရောက်မှုရှိသည်။ စစ်ထုတ်ခြင်းမရှိဘဲ ဖွဲ့စည်းမှု ညံ့ဖျင်းခြင်းသည် စွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်သည်။
မေး- Extended Event sessions ဖန်တီးရန် မည်သည့်ခွင့်ပြုချက်များ လိုအပ်သနည်း။
A- သင်သည် server-scoped sessions များအတွက် မည်သည့် EVENT SESSION ခွင့်ပြုချက်ကိုမဆို ပြောင်းလဲရန် သို့မဟုတ် database-scoped sessions အတွက် database ရှိ ထိန်းချုပ်မှုဆိုင်ရာ ခွင့်ပြုချက် လိုအပ်ပါသည်။
မေး- Extended Events ဒေတာကို ဘယ်လိုကြည့်ရမလဲ။
A: သုံးပါ။ SQL Server Management Studio ရဲ့ live data viewer၊ sys.fn_xe_file_target_read_file နဲ့ event file တွေကို query လုပ်တာ၊ ဒါမှမဟုတ် DMV တွေကနေတစ်ဆင့် ring buffer data တွေကို query လုပ်ပါ။
မေး- Extended Events သည် ဒေတာဘေ့စ် အကျင့်ပျက်ခြစားမှုကို ရှာဖွေတွေ့ရှိနိုင်ပါသလား။
A- ဟုတ်ကဲ့၊ တိုးချဲ့ထားသော ဖြစ်ရပ်များသည် အကျင့်ပျက်ခြစားမှုဆိုင်ရာ အမှားအယွင်းများ (823၊ 824၊ 825) တို့ကို ဖမ်းယူနိုင်ပြီး အလားအလာရှိသော အကျင့်ပျက်ခြစားမှုဆိုင်ရာ ပြဿနာများအတွက် ကြိုတင်သတိပေးချက်ဖြင့် စာမျက်နှာဖြစ်ရပ်များကို သံသယရှိနိုင်သည်။
မေး- ဖြစ်ရပ်များ၊ လုပ်ဆောင်ချက်များနှင့် ကြိုတင်ခန့်မှန်းချက်များအကြား ကွာခြားချက်မှာ အဘယ်နည်း။
A: ဖြစ်ရပ်များသည် သင်စောင့်ကြည့်လိုသော ဖြစ်ရပ်များဖြစ်သည်။ လုပ်ဆောင်ချက်များသည် ဖမ်းယူထားသော ဖြစ်ရပ်များသို့ ဖြည့်စွက်အချက်အလက်များကို ထည့်သွင်းပေးသည်။ ဒေတာပမာဏကို လျှော့ချရန် အခြေအနေများအပေါ် အခြေခံ၍ ဖြစ်ရပ်များကို စစ်ထုတ်သည်။
မေး- သတ်မှတ်ထားသော အပလီကေးရှင်းများ သို့မဟုတ် ဒေတာဘေ့စ်များမှ မေးမြန်းချက်များကို မည်သို့စောင့်ကြည့်ရမည်နည်း။
A- database_name, client_app_name, သို့မဟုတ် အခြားသော သက်ဆိုင်ရာ အကွက်များဖြင့် စစ်ထုတ်ရန် သင်၏ event configuration တွင် predicatesများကို အသုံးပြုပါ။
မေး- Extended Events တွေအတွက် ဘယ်လို target တွေကို သုံးသင့်လဲ။
A- အဆက်မပြတ်သိုလှောင်မှုနှင့် သမိုင်းဆိုင်ရာ ခွဲခြမ်းစိတ်ဖြာမှုအတွက် event_file ကို အသုံးပြု၍ အချိန်နှင့်တပြေးညီ စောင့်ကြည့်မှုအတွက် ring_buffer၊ ရိုးရှင်းသော ကြိမ်နှုန်းခြေရာခံခြင်းအတွက် event_counter နှင့် ဖြန့်ဖြူးမှုခွဲခြမ်းစိတ်ဖြာမှုအတွက် histogram ကို အသုံးပြုပါ။
မေး- Azure SQL Database တွင် Extended Events များကို ရနိုင်ပါသလား။
A- ဟုတ်ကဲ့၊ Azure SQL Database သည် Azure Blob Storage တွင် သိမ်းဆည်းထားသော ဖြစ်ရပ်ဖိုင်များနှင့်အတူ ဒေတာဘေ့စ်-နယ်ပယ်ချဲ့ထွင်ထားသော တိုးချဲ့ဖြစ်ရပ်များကို ပံ့ပိုးပေးပါသည်။
မေး- ဒေတာမဖမ်းနိုင်သော တိုးချဲ့ဖြစ်ရပ်များ စက်ရှင်ကို မည်သို့ဖြေရှင်းရမည်နည်း။
A: session စတင်ပြီးဖြစ်ကြောင်း အတည်ပြုပါ၊ predicates များသည် event အားလုံးကို filter မလုပ်ကြောင်း စစ်ဆေးပါ၊ target configuration ကို အတည်ပြုပါ၊ နှင့် system DMVs များကို အသုံးပြု၍ permissions များကို ပြန်လည်သုံးသပ်ပါ။
မေး- Extended Events Management ကို အလိုအလျောက်လုပ်ဆောင်နိုင်ပါသလား။
A: ဟုတ်ကဲ့ သုံးပါ။ SQL Server အစည်းအဝေးများ စတင်/ရပ်တန့်ရန်၊ ဖြစ်ရပ်ဖိုင်များကို ခွဲခြမ်းစိတ်ဖြာရန်၊ ထိန်းသိမ်းမှုမူဝါဒများကို အကောင်အထည်ဖော်ရန်နှင့် တွေ့ရှိထားသော အခြေအနေများကို တုံ့ပြန်ရန် Agent အလုပ်များ။
ကိုးကား
- အမြန်စတင်ခြင်း- တိုးချဲ့ထားသော ပွဲများ SQL Server - Microsoft ကို လေ့လာပါ။
- တိုးချဲ့ဖြစ်ရပ်များ ခြုံငုံသုံးသပ်ချက် – Microsoft Learn
- SQL Server Extended Events Sessions – Microsoft Learn
- တိုးချဲ့ထားသော ပွဲများအတွက် ပစ်မှတ်များ SQL Server - Microsoft ကို လေ့လာပါ။
- SQL Server Extended Events Engine – Microsoft Learn
- SQL Server Profiler- လမ်းညွှန်ချက်အပြည့်အစုံ
- DBCC CHECKDB- လမ်းညွှန်ချက်အပြည့်အစုံ
- DataNumen SQL Recovery
အာဘော်အကြောင်း
Yuan Sheng 10 နှစ်အထက်အတွေ့အကြုံရှိသောအကြီးတန်းဒေတာဘေ့စစီမံခန့်ခွဲသူ (DBA) SQL Server ပတ်ဝန်းကျင်နှင့် လုပ်ငန်းဒေတာဘေ့စ်စီမံခန့်ခွဲမှု။ သူသည် ဘဏ္ဍာရေးဝန်ဆောင်မှုများ၊ ကျန်းမာရေးစောင့်ရှောက်မှုနှင့် ကုန်ထုတ်လုပ်ငန်းအဖွဲ့အစည်းများရှိ ရာနှင့်ချီသော ဒေတာဘေ့စ်ပြန်လည်ရယူရေးအခြေအနေများကို အောင်မြင်စွာဖြေရှင်းနိုင်ခဲ့သည်။
Yuan သည် အထူးပြုသည်။ SQL Server ဒေတာဘေ့စ် ပြန်လည်ရယူခြင်း၊ ရရှိနိုင်မှုမြင့်မားသော ဖြေရှင်းချက်များနှင့် စွမ်းဆောင်ရည် အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ခြင်း။ သူ၏ ကျယ်ပြန့်သော လက်တွေ့အတွေ့အကြုံများတွင် multi-terabyte database များကို စီမံခန့်ခွဲခြင်း၊ အကောင်အထည်ဖော်ခြင်း ပါဝင်သည်။ အမြဲတမ်းရရှိနိုင်မှုအဖွဲ့များနှင့် မစ်ရှင်အရေးကြီးသော စီးပွားရေးစနစ်များအတွက် အလိုအလျောက် အရန်ကူးယူခြင်းနှင့် ပြန်လည်ရယူခြင်း မဟာဗျူဟာများကို ဖော်ဆောင်ခြင်း။
သူ၏ နည်းပညာကျွမ်းကျင်မှုနှင့် လက်တွေ့ကျသောချဉ်းကပ်မှုမှတစ်ဆင့် Yuan သည် ဒေတာဘေ့စ်စီမံခန့်ခွဲသူများနှင့် အိုင်တီပညာရှင်များ၏ရှုပ်ထွေးမှုကို ဖြေရှင်းရာတွင် အထောက်အကူဖြစ်စေမည့် ပြည့်စုံသောလမ်းညွှန်ချက်များကို ဖန်တီးရန် အာရုံစိုက်ထားသည်။ SQL Server စိန်ခေါ်မှုများကို ထိထိရောက်ရောက် သူသည် နောက်ဆုံးပေါ်နှင့် လက်ရှိရှိနေပါသည်။ SQL Server ထုတ်ဝေမှုများနှင့် Microsoft ၏ တိုးတက်ပြောင်းလဲနေသော ဒေတာဘေ့စ်နည်းပညာများ၊ သူ၏ အကြံပြုချက်များသည် လက်တွေ့ကမ္ဘာ၏ အကောင်းဆုံးအလေ့အကျင့်များကို ထင်ဟပ်ကြောင်း သေချာစေရန် ပြန်လည်ရယူခြင်းဆိုင်ရာ အခြေအနေများကို ပုံမှန်စမ်းသပ်နေသည်။
နှင့်ပတ်သက်သောမေးခွန်းများရှိသည်။ SQL Server ပြန်လည်ရယူခြင်း သို့မဟုတ် နောက်ထပ်ဒေတာဘေ့စ်ပြဿနာဖြေရှင်းခြင်းလမ်းညွှန်ချက် လိုအပ်ပါသလား။ ယွမ်က ကြိုဆိုပါတယ်။ အကြံပြုချက်များနှင့် အကြံပြုချက်များ ဤနည်းပညာဆိုင်ရာ အရင်းအမြစ်များ တိုးတက်စေရန်။

















