নেট মধ্যে SqlCommand.CommandTimeoutএবং এর SqlConnection.ConnectionTimeoutমধ্যে কোন পার্থক্য আছে ?
উত্তর:
হ্যাঁ. CommandTimeoutএকটি একক কমান্ড সম্পূর্ণ হতে কতক্ষণ সময় নিতে পারে। ConnectionTimeoutএটি দিয়ে সার্ভারের সাথে কোনও সংযোগ স্থাপন করতে কতক্ষণ সময় নিতে পারে।
উদাহরণস্বরূপ, আপনি তুলনামূলকভাবে দীর্ঘ-চলমান প্রশ্নগুলি চালাচ্ছেন - তাদের পক্ষে 10 মিনিট সময় শেষ হতে পুরোপুরি ঠিক আছে, তবে সংযোগটি শুরু করতে যদি 10 মিনিট সময় নেয় তবে আপনি জানতেন যে কোনও কিছু খারাপভাবে হয়েছে।
SqlCommand.CommandTimeoutআপনার এসকিউএল ক্যোয়ারীর জন্য = সময়সীমা সীমা। মানে, কত সময়ের জন্য একটি (যেমন: SELECT, UPDATE) ক্যোয়ারী তার সঞ্চালনের জন্য সময় লাগতে পারে। যদি এটি অতিক্রম করে SqlCommand.CommandTimeout, তবে এটি কার্যকর করা বন্ধ করে দেয়। একটি কমান্ড সময়সীমা ত্রুটি ঘটবে।
SqlConnection.ConnectionTimeoutআপনার সংযোগের জন্য = সময়সীমা সীমা। মানে, আপনার সংযোগের অবজেক্টটি সংযোগের জন্য কত সময় চেষ্টা করতে পারে। যদি এটি নির্দিষ্ট সময়ের চেয়ে বেশি হয় তবে এটি সংযোগ বন্ধ করে দেয়। একটি সংযোগের সময়সীমা ত্রুটি ঘটবে।
ConnectionTimeoutনির্দিষ্ট করে সময়সীমা যখন প্রয়াস আউট সময়জ্ঞান পূর্বে অপেক্ষা করতে খুলতে একটি SqlConnection। এটি Connection.Open()আদেশের সাথে প্রাসঙ্গিক ।
যখন
SqlCommand.CommandTimeoutসময় নির্ধারিত হওয়ার আগে অপেক্ষা করার জন্য কোনও এসকিএলকম্যান্ডের সময়কাল নির্দিষ্ট করে। কোনও সংযোগ খোলার পরে এবং ExecuteXXXকমান্ড অবজেক্টে একটি পদ্ধতির কল করার পরে এটি ঘটে ।
অতিরিক্ত তথ্য
ডিফল্ট মান CommandTimeout30 সেকেন্ড। শূন্য (0) কোনও সীমা নির্দেশ করে না। আপনি CommandTimeoutকেবল কোডিংয়ে মান সেট করতে পারেন ।
এর ডিফল্ট মান ConnectiontTimeout15 সেকেন্ড। শূন্য (0) পাশাপাশি কোনও সীমাও নির্দেশ করে না। শূন্যের চেয়ে কম মান (বিয়োগ মান) পাবে ArgumentException। আপনি ConnectionTimeoutকোডিং এবং কনফিগার ফাইল উভয়ই মান সেট করতে পারেন ।
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
কমান্ডটাইমআউট সম্পর্কিত দ্রুত নোট, যেহেতু এটি সংযোগ এবং কমান্ড উভয় বস্তুরই সম্পত্তি ...
একটি সংযোগ অবজেক্টের কমান্ডটাইমআউট সেটিংস একই সংযোগের কমান্ড অবজেক্টে কমান্ডটাইমআউট সেটিংয়ের কোনও প্রভাব ফেলবে না; তা হ'ল কমান্ড অবজেক্টের কমান্ডটাইমআউট সম্পত্তি সংযোগ বস্তুর কমান্ডটাইমআউট মানটির উত্তরাধিকারী হয় না।
সুতরাং একটি সংযোগ অবজেক্টের কমান্ডটাইমআউট সেটিংস কেবল সংযোগ অবজেক্টের অধীনে সম্পাদিত কমান্ডগুলিকেই প্রভাবিত করে (কোনও কমান্ড অবজেক্ট ব্যবহার না করে)।
উদাহরণস্বরূপ, আপনি যখন কোনও সঞ্চিত প্রকের সাথে সংযোগ স্থাপন করছেন এবং কমান্ড অবজেক্টে প্যারামিটার যুক্ত করছেন এবং কোনও সংযোগ বস্তুর সংযোগ ব্যবহার করে কমান্ড অবজেক্টটি কার্যকর করছেন, তখন আপনাকে উভয়ই ওভাররাইড করার জন্য কমান্ড অবজেক্টে কমান্ডটাইমআউট এবং সংযোগের সময় সংযোগকালীন সময় নির্ধারণ করতে হবে would পূর্ব নির্ধারিত. কানেকশন অবজেক্টে কমান্ডটাইমআউট সেট করা কমান্ড অবজেক্ট কমান্ডের জন্য ডিফল্ট টাইমআউটকে ওভাররাইড করবে না।
https://docs.microsoft.com/en-us/sql/ado/references/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / এসকিএল / অ্যাডো / রেফারেন্স / অ্যাডো-এপি / কানেকশনটাইম-প্রপার্টি-অ্যাডো? ভিউ = এসকিএল-সার্ভার-ভার15