TRY ... ഒരു സ്റ്റെപ്പ് ബൈ സ്റ്റെപ്പ് ഗൈഡ്. SQL സറ്വീസ് പിശകുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ക്യാച്ച്

എക്സിക്യൂഷൻ തടസ്സപ്പെടുത്താതെ പിശകുകൾ തിരിച്ചറിയുക

TRY ... Transact- ൽ CATCH സ്റ്റേറ്റ്മെന്റ്- നിങ്ങളുടെ ഡേറ്റാബേസ് ആപ്ലിക്കേഷനുകളിൽ പിശക് സാഹചര്യങ്ങൾ കണ്ടുപിടിക്കുകയും കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു. എസ്.ക്യു.എൽ. സെർവർ പിശക് ഹാൻഡ്ലിംഗിന്റെ മൂലക്കല്ലാണ് ഈ പ്രസ്താവന. കരുത്തുറ്റ ഡേറ്റാബേസ് ആപ്ലിക്കേഷനുകൾ വികസിപ്പിക്കുന്നതിന്റെ ഒരു പ്രധാനഘടകമാണ് ഇത്. TRY ... CATCH 2008 മുതൽ അസ്യുർ എസ്.ക്യു.എൽ. ഡാറ്റാബേസ്, അസൂർ എസ്.ക്യു.എൽ.ഡേ ഡാറ്റ വെയർഹൌസ്, പാരലൽ ഡേറ്റാ വേൾഹൗസ് തുടങ്ങിയ എസ്.ക്യു.എൽ.

TRY..CATCH പരിചയപ്പെടുത്തുക

TRY ... രണ്ട് Transact-SQL നിർദ്ദേശങ്ങൾ വ്യക്തമാക്കാൻ നിങ്ങളെ അനുവദിച്ചുകൊണ്ട് CATCH പ്രവർത്തിക്കുന്നു: നിങ്ങൾ "ശ്രമിക്കാൻ" ആഗ്രഹിക്കുന്നതും മറ്റൊന്നിൽ ഉണ്ടാകാവുന്ന "തെറ്റുകൾ" ഉപയോഗിക്കുന്നതിനായി മറ്റൊന്നും ഉപയോഗിക്കാൻ കഴിയും. എസ്.ആർ.ഒ. സെർവറിന് ഒരു TRY നേരിടേണ്ടി വരുമ്പോൾ ... കാറ്റ് പ്രസ്താവന, അതു ഉടൻ TRY വകുപ്പ് ഉൾപ്പെടുത്തിയിട്ടുണ്ട് പ്രസ്താവന നടപ്പിലാക്കുന്നു. TRY പ്രസ്താവന വിജയകരമായി നടപ്പിലാക്കുകയാണെങ്കിൽ, എസ്.ക്യു.എൽ. സെർവർ കേവലം മുന്നോട്ട് നീങ്ങുന്നു. എന്നിരുന്നാലും, TRY പ്രസ്താവന ഒരു പിശക് സൃഷ്ടിക്കുന്നുണ്ടെങ്കിൽ, എസ്.ക്.യു.ആർ.

അടിസ്ഥാന വാക്യഘടന ഈ ഫോം എടുക്കുന്നു:

BEGIN TRY {sql_statement | statement_block} END ശ്രമിക്കുക CATCH [{sql_statement | statement_block}] END കാച്ച് [; ]

പരീക്ഷിക്കുക ... കാറ്റ് ഉദാഹരണം

ഒരു ഉദാഹരണം ഉപയോഗിച്ച് ഈ പ്രസ്താവനയുടെ ഉപയോഗം മനസിലാക്കുന്നത് വളരെ എളുപ്പമാണ്. നിങ്ങളുടെ സ്ഥാപനത്തിലെ ഓരോ ജീവനക്കാരെയും കുറിച്ചുള്ള വിവരങ്ങൾ ഉൾക്കൊള്ളുന്ന "ജീവനക്കാർ" എന്ന ഒരു പട്ടിക അടങ്ങിയിട്ടുള്ള ഒരു മാനുഷിക റിസോഴ്സസ് ഡാറ്റാബേസിന്റെ അഡ്മിനിസ്ട്രേറ്റർ ആണെന്ന് കരുതുക. പ്രാഥമിക കീയായി ഒരു ഇൻഗണർ ജീവനക്കാരുടെ ഐഡി നമ്പർ ആ പട്ടിക ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റാബേസിൽ പുതിയൊരു ജീവനക്കാരനെ ചേർക്കാൻ താഴെ പറയുന്ന പ്രസ്താവന ഉപയോഗിക്കാവുന്നതാണ്:

INSERT INTO ജീവനക്കാർ (id, first_name, last_name, എക്സ്റ്റൻഷൻ) VALUES (12497, 'മൈക്ക്', 'ചാപ്പൽ', 4201)

സാധാരണ സാഹചര്യത്തിൽ, ഈ പ്രസ്താവന ജീവനക്കാരുടെ പട്ടികയിൽ ഒരു വരി ചേർക്കും. എന്നിരുന്നാലും, ID 12497 ഉള്ള ഒരു ജീവനക്കാരൻ ഇതിനകം ഡാറ്റാബേസിൽ നിലവിലുണ്ടെങ്കിൽ, വരിയിൽ പ്രാഥമിക കീ തടസ്സം ലംഘിക്കുകയും തുടർന്നുള്ള തെറ്റുകൾക്ക് കാരണമാകുകയും ചെയ്യും:

Ms. 2627, ലെവൽ 14, സ്റ്റേറ്റ് 1, ലൈനിൽ 1 പ്രാഥമിക കീ നിയന്ത്രണം 'PK_employee_id' എന്ന ലംഘനം. 'Dbo.employees' ഓബ്ജറ്റിൽ ഡ്യൂപ്ലിക്കേറ്റ് കീ ചേർക്കാൻ കഴിയില്ല. പ്രസ്താവന അവസാനിപ്പിച്ചു.

ഈ പിശക് നിങ്ങൾക്ക് പ്രശ്നപരിഹാരത്തിന് ആവശ്യമുള്ള വിവരങ്ങളുമായി നൽകുമ്പോൾ, അതിന് രണ്ട് പ്രശ്നങ്ങളുണ്ട്. ആദ്യം, സന്ദേശം നിഗൂഢമാണ്. പിശക് കോഡുകൾ, വരി സംഖ്യകൾ, ശരാശരി ഉപയോക്താവിന് അർത്ഥരഹിതമായ മറ്റ് വിവരങ്ങൾ എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു. രണ്ടാമത്തേത്, കൂടുതൽ പ്രാധാന്യം, ഇത് സ്റ്റേറ്റ്മെന്റ് തകരാറിലാവുകയും ആപ്ലിക്കേഷൻ തകരാറിനെ ബാധിക്കുകയും ചെയ്യാം.

ബദൽ പ്രസ്താവനയിൽ ഒരു പ്രസ്താവനയിൽ എഴുതിച്ചേർക്കുകയാണ് ... കാറ്റ് പ്രസ്താവന, താഴെ കാണിച്ചിരിക്കുന്നത് പോലെ:

BEGIN INSERT INTO ജീവനക്കാരെ (id, first_name, last_name, എക്സ്റ്റൻഷൻ) VALUES (12497, 'മൈക്ക്', 'ചാപ്ലിൾ', 4201) പരീക്ഷിക്കുക END കാറ്റ് പ്രിൻറ് 'പിശക്:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'തൊഴിലാളി മെയിൽ', @ റിസിക്റ്റ് = 'hr@foo.com', @body = 'ഒരു പുതിയ ജീവനക്കാരുടെ റെക്കോർഡ് സൃഷ്ടിക്കുന്നതിൽ ഒരു പിശക് സംഭവിച്ചു.', @subject = 'ജീവനക്കാരുടെ ഐഡി ഡ്യൂപ്ലിക്കേഷൻ പിശക്'; കാത്തിരിക്കുക

ഈ ഉദാഹരണത്തിൽ, സംഭവിക്കുന്ന ഏതു് പിശകുകളും ഉപയോക്താവിനും hr@foo.com ഇ-മെയിൽ വിലാസത്തിനും ബാധകമാകുന്നു. ഉപയോക്താവിനുള്ളിൽ കാണിച്ചിരിക്കുന്ന പിഴവ് താഴെ കാണുന്നു:

പിശക്: പ്രാഥമിക കീ നിയന്ത്രണം 'PK_employee_id' ലംഘനം. 'Dbo.employees' ഓബ്ജറ്റിൽ ഡ്യൂപ്ലിക്കേറ്റ് കീ ചേർക്കാൻ കഴിയില്ല. മെയിൽ ക്യൂവിലാണ്.

ഏറ്റവും പ്രധാനമായി, ആപ്ലിക്കേഷൻ എക്സിക്യൂഷൻ സാധാരണഗതിയിൽ തുടരുന്നു, ഇത് പ്രോഗ്രാമർ തെറ്റ് തിരുത്താനും സഹായിക്കുന്നു. TRY യുടെ ഉപയോഗം ... CATCH സ്റ്റേറ്റ്മെന്റ് SQL സാര്വ്വലായ ഡാറ്റാബേസ് ആപ്ലിക്കേഷനുകളിൽ ഉണ്ടാകുന്ന പിശകുകൾ മുൻകൂട്ടി കണ്ടുപിടിക്കുന്നതിനും കൈകാര്യം ചെയ്യുന്നതിനുമുള്ള ഒരു സുഗമമായ മാർഗ്ഗമാണ്.

കൂടുതൽ പഠിക്കുക

സ്ട്രക്ചേർഡ് ക്വിരി ഭാഷയെക്കുറിച്ച് കൂടുതൽ അറിയണമെങ്കിൽ, എസ്.ക്യു.എൽ ആമുഖം വായിക്കുക.