নেট মধ্যে SqlCommand.CommandTimeout
এবং এর SqlConnection.ConnectionTimeout
মধ্যে কোন পার্থক্য আছে ?
উত্তর:
হ্যাঁ. CommandTimeout
একটি একক কমান্ড সম্পূর্ণ হতে কতক্ষণ সময় নিতে পারে। ConnectionTimeout
এটি দিয়ে সার্ভারের সাথে কোনও সংযোগ স্থাপন করতে কতক্ষণ সময় নিতে পারে।
উদাহরণস্বরূপ, আপনি তুলনামূলকভাবে দীর্ঘ-চলমান প্রশ্নগুলি চালাচ্ছেন - তাদের পক্ষে 10 মিনিট সময় শেষ হতে পুরোপুরি ঠিক আছে, তবে সংযোগটি শুরু করতে যদি 10 মিনিট সময় নেয় তবে আপনি জানতেন যে কোনও কিছু খারাপভাবে হয়েছে।
SqlCommand.CommandTimeout
আপনার এসকিউএল ক্যোয়ারীর জন্য = সময়সীমা সীমা। মানে, কত সময়ের জন্য একটি (যেমন: SELECT
, UPDATE
) ক্যোয়ারী তার সঞ্চালনের জন্য সময় লাগতে পারে। যদি এটি অতিক্রম করে SqlCommand.CommandTimeout
, তবে এটি কার্যকর করা বন্ধ করে দেয়। একটি কমান্ড সময়সীমা ত্রুটি ঘটবে।
SqlConnection.ConnectionTimeout
আপনার সংযোগের জন্য = সময়সীমা সীমা। মানে, আপনার সংযোগের অবজেক্টটি সংযোগের জন্য কত সময় চেষ্টা করতে পারে। যদি এটি নির্দিষ্ট সময়ের চেয়ে বেশি হয় তবে এটি সংযোগ বন্ধ করে দেয়। একটি সংযোগের সময়সীমা ত্রুটি ঘটবে।
ConnectionTimeout
নির্দিষ্ট করে সময়সীমা যখন প্রয়াস আউট সময়জ্ঞান পূর্বে অপেক্ষা করতে খুলতে একটি SqlConnection
। এটি Connection.Open()
আদেশের সাথে প্রাসঙ্গিক ।
যখন
SqlCommand.CommandTimeout
সময় নির্ধারিত হওয়ার আগে অপেক্ষা করার জন্য কোনও এসকিএলকম্যান্ডের সময়কাল নির্দিষ্ট করে। কোনও সংযোগ খোলার পরে এবং ExecuteXXX
কমান্ড অবজেক্টে একটি পদ্ধতির কল করার পরে এটি ঘটে ।
অতিরিক্ত তথ্য
ডিফল্ট মান CommandTimeout
30 সেকেন্ড। শূন্য (0) কোনও সীমা নির্দেশ করে না। আপনি CommandTimeout
কেবল কোডিংয়ে মান সেট করতে পারেন ।
এর ডিফল্ট মান ConnectiontTimeout
15 সেকেন্ড। শূন্য (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