ஒரு படி-படி-படி கையேடு TRY ... SQL சர்வர் பிழைகள் கையாள கேட்ச்

மரணதண்டனை குறுக்கிடாமல் பிழைகள் அடையாளம் காணவும்

TRY ... Transact- ல் உள்ள CATCH அறிக்கை- SQL தரவுத்தளங்களை கண்டுபிடித்து உங்கள் தரவுத்தள பயன்பாடுகளில் பிழை நிலைகளை கையாளுகிறது. இந்த அறிக்கையானது SQL சர்வர் பிழை கையாளுதலின் மூலக்கூறு மற்றும் வலுவான தரவுத்தள பயன்பாடுகளை உருவாக்குவதற்கான ஒரு முக்கிய பகுதியாகும். TRY ... CATCH SQL Server 2008, Azure SQL Database, Azure SQL Data Warehouse மற்றும் Parallel Data Warehouse உடன் தொடங்குகிறது.

TRY..CATCH அறிமுகம்

TRY ... CATCH நீங்கள் இரண்டு பரிவர்த்தனை- SQL அறிக்கைகள் குறிப்பிட அனுமதிக்கிறது மூலம் வேலை: நீங்கள் "முயற்சி" என்று மற்றொரு மற்றும் எழும் எந்த பிழைகள் "பிடிக்க" பயன்படுத்த. SQL சர்வர் ஒரு TRY சந்திப்பு ... CATCH அறிக்கை, அது உடனடியாக TRY பிரிவு உள்ளிட்ட அறிக்கையை நிறைவேற்றும். TRY அறிக்கை வெற்றிகரமாக இயங்கினால், SQL Server வெறுமனே நகரும். எனினும், TRY அறிக்கை ஒரு பிழை உருவாக்கினால், SQL Server ஆனது கேட்ச் அறிக்கையை நிறைவேற்றுவதில் பிழைத்திருத்தத்தை நிறைவேற்றும்.

அடிப்படை தொடரியல் இந்த படிவத்தை எடுக்கிறது:

TRY {sql_statement | statement_block} END முயற்சி செய் கேட்ச் [{sql_statement | statement_block}] END CATCH [; ]

முயற்சி செய் ... கேட்ச் உதாரணம்

இது ஒரு உதாரணம் பயன்பாட்டின் மூலம் இந்த அறிக்கையின் பயன்பாட்டை புரிந்துகொள்வது எளிது. உங்கள் நிறுவனத்தில் பணியாற்றும் ஊழியர்களைப் பற்றிய தகவலைக் கொண்டிருக்கும் "பணியாளர்களை" என்ற அட்டவணையை வைத்திருக்கும் மனித வள தரவுத்தளத்தின் நிர்வாகியாக இருக்கிறீர்கள் என்று கற்பனை செய்து பாருங்கள். அந்த அட்டவணை முக்கிய குறியீடாக ஒரு முழுமையான ஊழியர் அடையாள எண்ணைப் பயன்படுத்துகிறது. ஒரு புதிய பணியாளரை உங்கள் தரவுத்தளத்தில் நுழைக்க கீழே உள்ள அறிக்கையை நீங்கள் பயன்படுத்த முயற்சி செய்யலாம்:

INSERT INTO ஊழியர்கள் (id, first_name, last_name, நீட்டிப்பு) VALUES (12497, 'மைக்', 'சாப்பல்', 4201)

சாதாரண சூழ்நிலையில், இந்த அறிக்கை ஊழியர்களின் அட்டவணையில் ஒரு வரிசையை சேர்க்கும். இருப்பினும், ஐடி 12497 உடன் ஒரு பணியாளர் ஏற்கனவே தரவுத்தளத்தில் இருந்தால், வரிசை முதன்மை முதன்மை கட்டுப்பாட்டுக்கு மீறுவதோடு பின்வரும் பிழைக்கு விளைவிக்கும்:

Msg 2627, Level 14, State 1, Line 1 PRIMARY KEY constraint 'PK_employee_id' ன் மீறல். பொருள் 'dbo.employees' இல் நகல் விசையை செருக முடியாது. அறிக்கை நிறுத்தப்பட்டது.

இந்த பிழை உங்களுக்கு பிரச்சனையை சரிசெய்ய வேண்டிய தகவலை உங்களுக்கு வழங்கும்போது, ​​இரண்டு சிக்கல்கள் உள்ளன. முதலாவதாக, செய்தி இரகசியமானது. இது பிழை குறியீடுகள், வரி எண்கள் மற்றும் சராசரியாக பயனருக்கு புரிந்துகொள்ள முடியாத பிற தகவல்கள். இரண்டாவதாக, மேலும் முக்கியமாக, அறிக்கையை நிறுத்துவதோடு, பயன்பாடு செயலிழக்கச் செய்யலாம்.

மாற்று TRY ல் அறிக்கையை முடிக்க வேண்டும் ... CATCH அறிக்கை, கீழே காட்டப்பட்டுள்ளபடி:

(+ 1, கடைசி_பெயர், கடைசி_பெயர், நீட்டிப்பு) VALUES (12497, 'மைக்', 'சாப்பல்', 4201) ஆகியவற்றை முயற்சிக்கவும் BEGIN CATCH PRINT 'பிழை:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'ஊழியர் அஞ்சல்', @ பழக்கவழக்கங்கள் = 'hr@foo.com', @body = 'ஒரு புதிய பணியாளர் பதிவை உருவாக்கும் ஒரு பிழை ஏற்பட்டது.', @subject = 'ஊழியர் ஐடி நகல் பிழை'; கேட்ச் முடிவு

இந்த எடுத்துக்காட்டில், நிகழும் ஏதேனும் பிழைகள் பயனர் கட்டளை மற்றும் hr@foo.com மின்னஞ்சல் முகவரி ஆகிய இரண்டிற்கும் தெரிவிக்கப்படுகின்றன. பயனர் காட்டப்படும் பிழை கீழே தோன்றுகிறது:

பிழை: பிரதான முக்கிய கட்டுப்பாடு 'PK_employee_id' மீறல். பொருள் 'dbo.employees' இல் நகல் விசையை செருக முடியாது. அஞ்சல் வரிசை.

மிக முக்கியமாக, பயன்பாட்டு செயல்படுத்தல் வழக்கமாக தொடர்கிறது, இதனால் ப்ரோக்ராமர் பிழையைத் தீர்த்துக்கொள்ள அனுமதிக்கிறது. டிஆர்ஐ பயன்படுத்து ... CATCH அறிக்கையானது SQL Server தரவுத்தள பயன்பாடுகளில் நிகழும் பிழைகள் முன்னர் கண்டறிந்து கையாள ஒரு நேர்த்தியான வழி.

மேலும் கற்றல்

கட்டமைக்கப்பட்ட வினவல் மொழி பற்றி மேலும் அறிய விரும்பினால் , SQL அறிமுகத்தைப் படிக்கவும்.