တစ်ဦးကအဆင့်-by-step လမ်းညွှန် toUsing SQL Server အမှားကိုင်တွယ်ရန် ... ကိုဖမ်းစမ်းကြည့်ပါ

ကွပ်မျက်ကြားဖြတ်မပြောဘဲအမှားများကိုခွဲခြားသတ်မှတ်

Transact- အတွက်ကြည့်ပါ ... ကိုဖမ်းကြေညာချက် SQL ကို detect နှင့်သင့်ဒေတာဘေ့စပလီကေးရှင်းအမှားအခြေအနေများကိုင်တွယ်။ ဒါကကြေညာချက် SQL Server အမှားကိုင်တွယ်များ၏အုတ်မြစ်သည်နှင့်ကြံ့ခိုင်ဒေတာဘေ့စ applications များဖွံ့ဖြိုးဆဲ၏အရေးပါသောအစိတ်အပိုင်းတစ်ခုဖြစ်ပါတယ်။ အမီလိုက် Azure SQL Database တစ်ခုနဲ့, Azure SQL ဒေတာသိုလှောင်ရုံနှင့်စင်ပြိုင်ဒေတာသိုလှောင်ရုံ, 2008 နှင့်အတူစတင် SQL Server အားသက်ဆိုင် ... စမ်းကြည့်ပါ။

TRY..CATCH မိတ်ဆက်ခြင်း

သင် "ဖမ်း" ကိုသုံးစွဲဖို့ပေါ်ထွန်းအံ့သောငှါမဆိုအမှားများကို "ကွိုးစား" နှင့်အခြားချင်တ: Catch သငျသညျနှစျခု transaction-SQL statement တွေကိုသတ်မှတ်ခွင့်ပြုခြင်းဖြင့်အလုပ်လုပ်တယ် ... စမ်းကြည့်ပါ။ SQL Server တစ်ခုကြည့်ပါ ... ကိုဖမ်းကြေညာချက်ရင်ဆိုင်သောအခါ, ချက်ချင်းကွိုးစားပါအပိုဒ်တွင်ထည့်သွင်းကြေညာချက် ပေး. စီရင်။ အဆိုပါကွိုးစားပါကြေညာချက်ကိုအောင်မြင်စွာ ပေး. စီရင်လြှငျ, SQL Server ကိုရိုးရှင်းစွာပေါ်လှုံ့ဆော်ပေး။ အဆိုပါကွိုးစားပါကြေညာချက်မှားယွင်းမှုတစ်ခုထုတ်ပေးလျှင်မည်သို့ပင်ဆို, SQL Server ကိုလျောက်ပတ်အမှားကိုင်တွယ်ရန်အမီလိုက်ကြေညာချက် ပေး. စီရင်။

အခြေခံ syntax ဤပုံစံကိုယူ:

ကွိုးစားပါ {sql_statement အစ | statement_block} END သည်ကိုဖမ်း [{sql_statement အစစမ်းကြည့်ပါ | statement_block}] END သည်ကိုဖမ်း [; ]

စမ်းကြည့်ပါ ... ဥပမာကိုဖမ်း

ဒါဟာဥပမာတစ်ခု၏အသုံးပြုမှုကိုတဆင့်ဒီကြေညာချက်၏အသုံးပြုမှုကိုနားလည်ရန်အလွယ်ကူဆုံးပါပဲ။ သင့်အဖွဲ့အစည်းအတွက်န်ထမ်းတစ်ဦးချင်းစီအကြောင်းသတင်းအချက်အလက်် "ဝန်ထမ်းများ," အမည်ရှိစားပွဲတစ်ခုပါရှိသည်တဲ့လူ့စွမ်းအားအရင်းအမြစ်ဒေတာဘေ့စများ၏စီမံခန့်ခွဲသူဖြစ်ကြောင်းဆိုပါစို့။ အဲဒီဇယားသည်အဖြစ်ကိန်းဝန်ထမ်း ID နံပါတ်ကိုအသုံးပြုသည် မူလတန်းသော့ချက် ။ သင်သည်သင်၏ဒေတာဘေ့စသို့အသစ်တခုဝန်ထမ်းထည့်သွင်းဖို့အောက်ကကြေညာချက်သုံးစွဲဖို့ကြိုးစားလိမ့်မယ်:

န်ထမ်း (အိုင်ဒီ, FIRST_NAME, LAST_NAME, extension ကို) တန်ဖိုး (12497, 'သူ Mike', 'Chapple' 4201) ထဲသို့ထည့်

ပုံမှန်အခြေအနေမျိုးမှာ, ဒီကြေညာချက်န်ထမ်းစားပွဲတစ်တန်း add လိမ့်မယ်။ သို့သော် ID ကို 12497 နှင့်အတူပါလျှင်တစ်ဦးဝန်ထမ်းပြီးသားအတန်းထည့်မူလတန်း key ကိုသတ်ချိုးဖောက်ပြီးအောက်ပါအမှားဖြစ်ပေါ်လိမ့်မယ်, database တွင်တည်ရှိ:

msg 2627 PRIMARY KEY ကိုသတ်ခြင်း, အဆင့် 14, ပြည်နယ် 1, လိုင်း 1 ချိုးဖောက်ခြင်း '' PK_employee_id '' ။ အရာဝတ္ထု '' dbo.employees '၌ထပ် key ကိုထည့်သွင်းလို့မရပါဘူး။ အဆိုပါကြေညာချက်ရပ်စဲခဲ့တာဖြစ်ပါတယ်။

ဒီအမှားသင်ပြဿနာ troubleshoot ဖို့လိုအပ်သတင်းအချက်အလက်များအားဖြင့်သင်တို့ကိုထောက်ပံ့ပေးနေစဉ်, ကနှစ်ခုကိစ္စများရှိပါသည်။ ပထမဦးစွာမက်ဆေ့ခ်ျကိုယခုလိုဖြစ်ပါတယ်။ ဒါဟာပျမ်းမျှအားအသုံးပြုသူမှနားမလည်အမှား codes တွေကိုလိုင်းနံပါတ်များကိုများနှင့်အခြားသတင်းအချက်အလက်များပါဝင်သည်။ ဒုတိယအနေနှင့်ပိုပြီးအရေးကြီးတာကကကြေညာချက်ဖျက်သိမ်းစေပြီး application တစ်ခုပျက်ကျမှုဖြစ်ပွားစေနိုင်ပါတယ်။

အောက်မှာပြထားတဲ့အတိုင်းအခြားရွေးချယ်စရာ ... တစ်ဦးကွိုးစားထဲမှာအမီလိုက်ကြေညာချက်ကြေညာချက်ခြုံဖို့ဖြစ်ပါတယ်:

'' အမှား: '' Catch တူထုအစစမ်းကြည့်ပါန်ထမ်း (အိုင်ဒီ, FIRST_NAME, LAST_NAME, extension ကို) တန်ဖိုး (12497, 'သူ Mike', 'Chapple' 4201) END သည်ထဲသို့ကွိုးစား INSERT အစ + ERROR_MESSAGE (); အမှုဆောင်အရာရှိ msdb.dbo.sp_send_dbmail @profile_name = 'န်ထမ်းမေးလ်' @recipients = 'hr@foo.com' @body = 'အမှားအသစ်တစ်ခုကိုဝန်ထမ်းစံချိန်ကိုဖြစ်ပွားခဲ့သည်။ ', @subject = 'န်ထမ်း ID ကိုမိတ္တူမှားယွင်းနေသည်'; END သည်ကိုဖမ်း

ဒီဥပမာထဲမှာ, ဖြစ်ပေါ်ကြောင်းမဆိုအမှားများကိုအမိန့်ကွပ်မျက်အသုံးပြုသူနှင့် hr@foo.com e-mail လိပ်စာနှစ်ခုလုံးကိုသတင်းပို့ရသည်။ အသုံးပြုသူမှပြထားတဲ့အမှားအောက်တွင်ဖော်ပြထားသောပုံပေါ်:

အမှား: PRIMARY KEY ကိုသတ်ကိုချိုးဖောက်ကြောင်း '' PK_employee_id '' ။ အရာဝတ္ထု '' dbo.employees '၌ထပ် key ကိုထည့်သွင်းလို့မရပါဘူး။ မေးလ်တန်းစီ။

အရေးအကြီးဆုံးကတော့, လျှောက်လွှာကွပ်မျက်အဆိုပါပရိုဂရမ်မာလျောက်ပတ်အမှားကိုင်တွယ်ရန်ခွင့်ပြု, ပုံမှန်အားဆက်လက်။ အဆိုပါကွိုးစားအသုံးပြုခြင်း ... ကိုဖမ်းကြေညာချက်လူကြီးမင်း SQL Server ကိုဒေတာဘေ့စပလီကေးရှင်းဖြစ်ပေါ်ကြောင်းအမှားများကိုရှာဖွေပြီးကိုင်တွယ်ရန်တစ်ကြော့နည်းလမ်းဖြစ်ပါတယ်။

နောက်ထပ်သင်ယူခြင်း

သင်ပုံစံချထားသော Query Language အကြောင်းပိုမိုလေ့လာသင်ယူရန်လိုလျှင်ဖတ် SQL ဖို့နိဒါန်း