এসকিউএল সার্ভারে ERROR_STATE () কী এবং এটি কীভাবে ব্যবহার করা যায়?


13

আমি পড়েছি যা ERROR_STATE()উত্স কোডে বিভিন্ন রাজ্য / অবস্থানের মধ্যে পার্থক্য করতে সহায়তা করতে পারে যেখানে একই ধরণের ত্রুটি ঘটতে পারে। তবে এটি কীভাবে কার্যকর হতে পারে তা আমার কাছে সত্যিই পরিষ্কার নয়।

এমএসডিএন বলে:

ERROR_STATE() TRY… CATCH কনস্ট্রাক্টের চালনার জন্য ক্যাচ ব্লক হওয়ার কারণে ত্রুটির স্থিতির নম্বরটি দেয়।

এটি কীভাবে ব্যবহার করা যায়? কেউ কি আমাকে উদাহরণ দিতে পারেন, এই রেফারেন্স নিবন্ধে প্রদত্ত বিষয়গুলি আমার পক্ষে জিনিসগুলি ভালভাবে ব্যাখ্যা করতে সহায়তা করে না?


Error_Stateএবং Error_Numberসংমিশ্রণ আপনাকে একটি ত্রুটি সম্পর্কে আরও পরিষ্কার ছবি দেবে। সম্পর্কিত
ত্রুটিগুলি

ধন্যবাদ! তবে আমি এই লিঙ্কটি আগেও পড়েছি। এমএসডিএন-তে এর জন্য ভাল উদাহরণ দেওয়া হয়নি বলে এটি কার্যকর হয়নি। সে কারণেই আমি এখানে প্রশ্ন উত্থাপন করেছি।

উত্তর:


9

এসকিউএল সার্ভার ত্রুটি রাষ্ট্রগুলির উদ্দেশ্য হ'ল এসকিউএল সার্ভার ডেভলপমেন্ট টিম কোডে সনাক্ত করতে সক্ষম হওয়ার জন্য সঠিক জায়গায় সিস্টেমের ত্রুটিগুলি একাধিক স্থানে উত্থাপিত হয়েছিল in

আপনি শেষ ব্যবহারকারী হিসাবে (যেমন এসকিউএল সার্ভার ব্যবহার করে অ্যাপ্লিকেশনগুলির বিকাশকারী) অনুরূপভাবে পাস হওয়া রাষ্ট্রটি ব্যবহার করতে RAISERRORপারেন যাতে আপনার পণ্য সমর্থন যে পদ্ধতিতে কোনও ত্রুটি উত্থাপন করে সেই জায়গাটি সনাক্ত করতে পারে for

create procedure usp_my_proc
as
if <somecondition>
  raiserror(N'Error foo and bar', 16, 0);
if <someothercondition>
  raiserror(N'Error foo and bar', 16, 1);
go

কোন ত্রুটি কেসটি আঘাত পেয়েছিল তা পরে দুটি রাষ্ট্র কীভাবে আপনাকে আলাদা করার অনুমতি দেয় তা দেখুন। আপনি বলার আগে 'তবে আমি ত্রুটি বার্তার দিকে নজর দিতে পারি' আমি আপনাকে একটি শব্দ বলছি: আন্তর্জাতিককরণ।


হ্যাঁ, এটাই আমি খুঁজছিলাম ..! :) এখন সব পরিষ্কার! ধন্যবাদ!
জ্যাকজিল

খুব সুন্দর উত্তর। জ্ঞান আপনার পোস্ট থেকে প্রাপ্ত উত্তম তারপর এই বুঝতে হয় technet.microsoft.com/en-us/library/ms180031.aspx
কাসিফ

6

না, এটি কোথায় ত্রুটি ঘটেছে তা খুঁজে পেতে আপনাকে সহায়তা করে না। এখানে একটি দ্রুত উদাহরণ। যদি আপনি 0 দিয়ে ভাগ করার চেষ্টা করেন তবে আপনি বিশদ বিবরণ সহ একটি ত্রুটি বার্তা পাবেন:

SELECT 1/0;

ফলাফল:

Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.

State1 টির সাথে একটি বলা হয়? ERROR_STATE()এই মানটি ফেরত দেয়। আপনি যদি ব্যবহার করেন TRY/CATCH:

BEGIN TRY
  SELECT 1/0;
END TRY
BEGIN CATCH
  SELECT ERROR_STATE();
END CATCH

ফলাফল:

----
   1

এখানেই শেষ. বেশিরভাগ পরিস্থিতিতে কার্যকর নয়। আপনি কার্যকর মনে হয় এমন নির্দিষ্ট ফাংশনগুলিতে খুব গভীরভাবে ডুব দেওয়ার আগে আমি সাধারণভাবে ত্রুটি পরিচালনার বিষয়ে আরও পড়ার পরামর্শ দিই।

http://msdn.microsoft.com/en-us/library/ms175976.aspx

http://www.sommarskog.se/error_handling_2005.html


ধন্যবাদ, এটি কিছুটা সাহায্য করেছে। আমার কোনও অধিকারের প্রয়োজন না হওয়ায় আপনার উত্তরটি ভোট দিতে পারে না। যাইহোক, আমি এই উদাহরণটির সাথে এই ফাংশনটির অস্তিত্বের কারণটি পেতে চেয়েছিলাম। এমএসডিএন বলছে ইআরআররোপেট () ত্রুটি রাষ্ট্রের নম্বরটি দেয়, তবে আমি তার সাথে কী করব !!

2
@ জ্যাকজিল কখনও কখনও আপনি ত্রুটি-স্থিতি এবং আপনার ত্রুটি-পরিচালনা পরিচালনার স্থাপত্যের জটিলতার উপর নির্ভর করে আপনার অ্যাপ্লিকেশনটিকে একটি নির্দিষ্ট উপায়ে প্রতিক্রিয়া জানাতে চাইবেন তবে আমি সন্দেহ করি যে এর ত্রুটিগুলি বিস্তৃতভাবে পরিচালনা করা বিরল। ত্রুটি নম্বর নিজেই ( নির্দিষ্ট ত্রুটি আটকে রাখা ) বা ত্রুটির তীব্রতার সাথে আরও অনেক সাধারণ । আমি কখনও স্মরণ করতে পারি না যে কেউ ত্রুটি স্থিতিকে অর্থবহ উপায়ে ব্যবহার করে ডেমোগুলি উপস্থিত রয়েছে তা দেখানো ব্যতীত।
অ্যারন বার্ট্র্যান্ড

ঠিক আছে, ধন্যবাদ হারুন :) এছাড়াও, আপনি এই প্রশ্নের জন্য একটি অনুগ্রহ সেট করতে পারেন? যাতে কিছু প্রযুক্তিবিদ এর সঠিক উত্তরটি পাওয়ার চ্যালেঞ্জ হিসাবে গ্রহণ করে। অন্যথায় আপনি বিজয়ী মানুষ।

4
হ্যাঁ @ অ্যারনবার্ট্র্যান্ড আপনার সঠিক উত্তরটির বিরুদ্ধে প্রতিযোগিতা করার জন্য আপনার নিজস্ব পয়েন্টগুলির একটি গোছা রেখেছিল।
জেন

2
@ জ্যাজজিল এতগুলি প্রযুক্তিবিদ নেই যারা হারুনের চেয়ে এসকিউএল সার্ভার সম্পর্কে আরও বেশি জানেন এবং তাদের বেশিরভাগই এখানে কখনও দেখায় না। এবং আপনার প্রশ্নের উত্তর এখানে দেওয়া হয়েছে (সম্ভবত এটি ঠিক যেমন যেতে পারে ঠিক তেমন)।
dezso

1

সংক্ষিপ্ত উত্তর - এটি পারে না। একটি ERROR_STATE মূলত একটি ERROR_NUMBER এর উপ-বিভাগ। কোন লাইন কোডের ফলে ত্রুটি ঘটেছে তা আপনাকে বলতে পারে না (ERROR_NUMBER এবং ERROR_STATE হিসাবে একসাথে আপনাকে ত্রুটির কারণ জানাতে হবে এবং এরপরে কারণটি কী তা স্পষ্ট হয়ে ওঠে)।


ধারণাটি বোধগম্য যে এটি ERROR_NUMBER () ফাংশনটি সর্বদা ব্যবহার করা উচিত। তবে এর ব্যবহারের একটি উদাহরণ ERROR_STATE () এর সাথে ERROR_NUMBER () চিত্র সম্পূর্ণরূপে স্পষ্ট করবে। বা কোনও ভাল রেফারেন্স লিঙ্ক যথেষ্ট হবে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.