আমি বিশ্বাস করি যে কয়েকটি ব্যতিক্রম আছে তবে ডেটাবেস ইঞ্জিন ত্রুটি তীব্রতা (এমএসডিএন) থেকে :
19 বা ততোধিকের তীব্রতার স্তরের ত্রুটি বার্তাগুলি বর্তমান ব্যাচের কার্যকারিতা বন্ধ করে।
ত্রুটিগুলি যেগুলি ডেটাবেস সংযোগটি শেষ করে, সাধারণত 20 থেকে 25 এর মধ্যে তীব্রতার সাথে, ক্যাচ ব্লক দ্বারা পরিচালিত হয় না কারণ সংযোগটি শেষ হলে মৃত্যুদন্ড কার্যকর করা হয়।
সুতরাং দেখে মনে হচ্ছে আপনি নিম্নলিখিত কোয়েরি থেকে একটি সুনির্দিষ্ট তালিকা পেতে পারেন (অবশ্যই এটি আপনাকে টি-এসকিউএল এর ফলে কোনটি তৈরি করতে পারে তা ফিল্টার করতে দেয় না):
SELECT message_id, severity, [text]
FROM sys.messages
WHERE language_id = 1033
AND severity >= 19
ORDER BY severity, message_id;
এসকিউএল সার্ভারে 2012, এটি 210 সারি তৈরি করে produces
এসকিউএল সার্ভার 2016 এ এটি 256 টি সারি তৈরি করে।
যাইহোক, আপনার প্রশ্নে আপনি যে দুটি পরিস্থিতিতে বর্ণনা করেছেন তাতে আপনি যেভাবে ভাবছেন ঠিক সেভাবেই বিশ্বাস করি না, কমপক্ষে এসকিউএল সার্ভারের আধুনিক সংস্করণগুলিতে নয়। আমি 2012 এবং 2016 উভয় ক্ষেত্রেই এটি চেষ্টা করেছি (আমি বিশ্বাস করি এরল্যান্ডের নিবন্ধটি এসকিউএল সার্ভার 2000 আচরণের বর্ণনা দেয়, যা আমি মনে করি না এটি অন্যরকম ছিল কিনা, তবে আজও খুব প্রাসঙ্গিক নয়)।
USE tempdb;
GO
CREATE PROCEDURE dbo.pA -- no parameters
AS PRINT 1
GO
CREATE PROCEDURE dbo.pB -- two parameters
@x INT, @y INT
AS PRINT 1
GO
SET XACT_ABORT OFF;
GO
EXEC dbo.pA @foo = 1;
PRINT '### Calling procedure that doesn''t take parameters with a parameter';
GO
EXEC dbo.pB;
PRINT '### Calling procedure that takes 2 parameters with no parameters';
GO
EXEC dbo.pB @x = 1;
PRINT '### Calling procedure that takes 2 parameters with not enough parameters';
GO
EXEC dbo.pB @x = 1, @y = 2, @z = 3;
PRINT '### Calling procedure that takes 2 parameters with too many parameters';
GO
এই সমস্ত তীব্রতা স্তরের 16 এর ত্রুটি তৈরি করে এবং এগুলির সমস্ত ব্যাচটি নিয়ে প্রিন্ট আউটপুট দ্বারা প্রমাণিত হয়:
এমএসজি 8146, স্তর 16, রাজ্য 2, প্রক্রিয়া পিএ, লাইন 11
পদ্ধতি পিএর কোনও পরামিতি নেই এবং যুক্তি সরবরাহ করা হয়নি।
### কলিং পদ্ধতি যা
এমএসজি 201, স্তরের 16, রাজ্য 4, প্রক্রিয়া পিবি, লাইন 14
পদ্ধতি বা ফাংশন 'পিবি' প্যারামিটার '@ x' আশা করে, যা সরবরাহ করা হয়নি with
### কলিং পদ্ধতি যা
এমএসজি 201, স্তর 16, রাজ্য 4, পদ্ধতি পিবি, লাইন 18
পদ্ধতি বা ফাংশন 'পিবি' সরবরাহ করে না এমন প্যারামিটার প্রত্যাশা করে 2 পরামিতি নেয়।
### কলিং পদ্ধতি যা পর্যাপ্ত
পরিমানের এমএসজি 8144, স্তর 16, রাজ্য 2, প্রক্রিয়া পিবি, লাইন 22
পদ্ধতি বা ফাংশন পিবি সহ 2 পরামিতি নেয়
খুব বেশি যুক্তি নির্দিষ্ট করা আছে।
### কলিংয়ের পদ্ধতি যা অনেক বেশি পরামিতি সহ 2 টি পরামিতি নেয়
আমি সন্দেহ হিসাবে, অবশ্যই ব্যতিক্রম আছে, মন্তব্য হিসাবে উল্লিখিত। রূপান্তর ব্যর্থতা তীব্রতা 16 কিন্তু ব্যাচটি বাতিল করে:
SET XACT_ABORT OFF;
SELECT CONVERT (INT, 'foo');
PRINT 'Made it.'; -- no print happens
ফলাফলগুলি মুদ্রণ আউটপুট এই সময় অন্তর্ভুক্ত নয়:
এমএসজি 245, স্তর 16, রাজ্য 1
রূপান্তরটি ব্যর্থ হয়েছে যখন বর্ণের মান 'foo' কে ডেটা টাইপ ইনটে রূপান্তরিত করে।