চেষ্টা চালানোর জন্য একটি ধাপে ধাপে গাইড ... SQL সার্ভার ত্রুটিগুলি পরিচালনা করতে ক্যাশ করুন

মৃত্যুদন্ড কার্যকর না করেই ত্রুটি সনাক্ত করুন

TRY ... ট্রান্স্যাক্টের ক্যাচ স্টেটমেন্ট - এসকিএল সনাক্ত করে এবং আপনার ডাটাবেস অ্যাপ্লিকেশনের ক্ষেত্রে ত্রুটিগুলি পরিচালনা করে। এই বিবৃতি হল SQL সার্ভার ত্রুটি পরিচালনার ভিত্তি এবং শক্তিশালী ডাটাবেস অ্যাপ্লিকেশন উন্নয়নশীল একটি গুরুত্বপূর্ণ অংশ। চেষ্টা করুন ... ক্যাশ দ্বারা SQL সার্ভারে প্রযোজ্য 2008, অজোরে এসকিউএল ডেটাবেস, অজোরে এসকিউএল ডেটা ওয়ারহাউস এবং প্যারালাল ডাটা ওয়ারহাউস।

TRY..CATCH উপস্থাপনা

চেষ্টা করুন ... দুটি ট্রান্স্যাক্ট-এসকিউএল বিবৃতি উল্লেখ করার দ্বারা ক্যাচ কাজ করে: একটি যে আপনি "চেষ্টা" করতে চান এবং অন্য কোনও ত্রুটিগুলি "ধরতে" ব্যবহার করতে পারেন। যখন এসকিউএল সার্ভার একটি TRY সম্মুখীন ... ক্যাচ বিবৃতি, এটি অবিলম্বে TRY ধারা অন্তর্ভুক্ত বিবৃতি executes। TRY বিবৃতি সফলভাবে সঞ্চালিত হলে, SQL সার্ভার সহজভাবে উপর সরানো যাইহোক, যদি TRY বিবৃতিটি একটি ত্রুটির উত্পন্ন করে, তাহলে SQL সার্ভার সিটিচ স্টেটমেন্টটি ক্রমাগত ত্রুটিটি পরিচালনা করে।

মৌলিক সিনট্যাক্স এই ফর্ম নেয়:

BEGIN চেষ্টা করুন {sql_statement | বিবৃতি_ব্লক} শেষবারের মতো ক্যাচ [{sql_statement | বিবৃতি_block}] END CATCH [; ]

চেষ্টা করুন ... ক্যাচ উদাহরণ

একটি উদাহরণ ব্যবহার করে এই বিবৃতি ব্যবহার বুঝতে এটি সবচেয়ে সহজ। কল্পনা করুন যে আপনি একটি মানব সম্পদ ডাটাবেসের প্রশাসক যিনি "কর্মচারী" নামক টেবিলে রয়েছে, আপনার সংস্থার প্রতিটি কর্মচারীর সম্পর্কে তথ্য রয়েছে। যে টেবিল প্রাথমিক কী হিসাবে একটি পূর্ণসংখ্যা কর্মী আইডি নম্বর ব্যবহার করে। আপনি আপনার ডাটাবেসের মধ্যে একটি নতুন কর্মচারী সন্নিবেশ করার জন্য নিচের বিবৃতি ব্যবহার করার চেষ্টা করতে পারেন:

কর্মচারীদের (IN, first_name, last_name, এক্সটেনশান) মানগুলি INSERT (12497, 'মাইক', 'চ্যাপেল', 4২01)

স্বাভাবিক পরিস্থিতিতে, এই বিবৃতি কর্মচারীদের টেবিলে একটি সারি যুক্ত করবে। যাইহোক, যদি আইডি 12497 একটি কর্মী ডাটাবেসের মধ্যে ইতিমধ্যে বিদ্যমান, সারি সন্নিবেশ প্রাথমিক কী সীমাবদ্ধতা লঙ্ঘন হবে এবং নিম্নলিখিত ত্রুটির ফলে:

বার্তা ২6২7, লেভেল 14, স্টেট 1, লাইন 1 প্রাথমিক কী বাধা 'পি কে_মার্চার_িড' এর লঙ্ঘন। 'Dbo.employees' বস্তুর ডুপ্লিকেট কী সন্নিবেশ করা যাবে না বিবৃতিতে বাতিল করা হয়েছে।

এই ত্রুটিটি আপনাকে সমস্যার সমাধান করার জন্য প্রয়োজনীয় তথ্য সরবরাহ করে, তবে এটির দুটি সমস্যা রয়েছে। প্রথম, বার্তা রহস্যপূর্ণ হয়। এটি ত্রুটি কোড, লাইন নম্বর এবং অন্যান্য ব্যবহারকারীদের কাছে অপ্রত্যাশিত তথ্য অন্তর্ভুক্ত করে। দ্বিতীয়ত, এবং আরো গুরুত্বপূর্ণ, এটি বিবৃতিটি বাতিল এবং একটি অ্যাপ্লিকেশন ক্র্যাশ হতে পারে কারণ।

বিকল্পটি একটি TRY ... ক্যাচ স্টেটমেন্টে বিবৃতিটি আবৃত করা, যেমনটি নীচে দেখানো হয়েছে:

BEGIN কর্মচারী (id, first_name, last_name, extension) VALUES (1২497, 'মাইক', 'চ্যাপেল', 4২01) এ অন্তরে অন্তরে অন্তরে অন্তরে অন্তর অন্তরালে আবর্জনা আটক করুন '' ত্রুটি: '+ ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'কর্মচারী মেইল', @recipients = 'hr@foo.com', @body = 'একটি নতুন কর্মচারী রেকর্ড তৈরির সময় একটি ত্রুটি ঘটেছে।', @ বিষয়সূচি = 'কর্মচারী আইডি দ্বৈত ত্রুটি'; শেষ ক্যাচ

এই উদাহরণে, যে কোনও ত্রুটি ঘটেছে ব্যবহারকারীকে কমান্ড ও hr@foo.com ই-মেইল ঠিকানা সম্পাদন করার জন্য উভয়কে রিপোর্ট করা হয়। ব্যবহারকারী দেখানো ত্রুটি নিচে প্রদর্শিত হবে:

ত্রুটি: প্রাথমিক কী বাধা 'PK_employee_id' এর লঙ্ঘন 'Dbo.employees' বস্তুর ডুপ্লিকেট কী সন্নিবেশ করা যাবে না মেল সারি

সর্বাপেক্ষা গুরুত্বপূর্ণভাবে, অ্যাপ্লিকেশন নির্বাহণ সাধারনভাবে চলতে থাকে, যাতে প্রোগ্রামার ত্রুটিপূর্ণভাবে ত্রুটিটি পরিচালনা করে। TRY ব্যবহার করুন ... ক্যাচ বিবৃতি সক্রীয়ভাবে SQL সার্ভার ডেটাবেস অ্যাপ্লিকেশনে ঘটতে ত্রুটি সনাক্ত এবং হ্যান্ডেল করার একটি মার্জিত উপায়।

আরও শিখুন

যদি আপনি স্ট্রাকচার্ড কোয়েরি ভাষা সম্পর্কে আরও জানতে চান, এসকিউএলের ভূমিকা পড়ুন।