স্কেলকম্যান্ড.কম্যান্ডটাইমআউট এবং স্কেল সংযোগ.কনেকশনটাইমআউটের মধ্যে পার্থক্য কী?


88

নেট মধ্যে SqlCommand.CommandTimeoutএবং এর SqlConnection.ConnectionTimeoutমধ্যে কোন পার্থক্য আছে ?


এটি এমএস এসকিউএল সার্ভারের সাথে নির্দিষ্ট?
ympostor

উত্তর:


128

হ্যাঁ. CommandTimeoutএকটি একক কমান্ড সম্পূর্ণ হতে কতক্ষণ সময় নিতে পারে। ConnectionTimeoutএটি দিয়ে সার্ভারের সাথে কোনও সংযোগ স্থাপন করতে কতক্ষণ সময় নিতে পারে।

উদাহরণস্বরূপ, আপনি তুলনামূলকভাবে দীর্ঘ-চলমান প্রশ্নগুলি চালাচ্ছেন - তাদের পক্ষে 10 মিনিট সময় শেষ হতে পুরোপুরি ঠিক আছে, তবে সংযোগটি শুরু করতে যদি 10 মিনিট সময় নেয় তবে আপনি জানতেন যে কোনও কিছু খারাপভাবে হয়েছে।


4
তর্কের খাতিরে, বলি যে আমার কাছে একটি আছে! ** & # প্রশ্ন @? ক্যোয়ারী যা চালাতে 32 সেকেন্ড সময় নেয়। আমি যদি SqlCommand.CommandTimeout = 40 সেট করে রাখি তবে SQLlConnication.ConnicationTimeout কে তার ডিফল্ট (সম্ভবত 30) এ ছেড়ে দিই, সংযোগের সময়সীমা শেষ হবে? অন্য কথায়, আমি উভয় সম্পত্তি সেট করতে হবে? দেখে মনে হচ্ছে আপনি "না," বলছেন তবে আমি অবশ্যই এসকিএল সংযোগটি সম্পর্কে ভুলে গেছি on কানেকশনটাইমআউট সম্পত্তি এবং কমান্ডটাইমআউট সেট করা আমার প্রয়োজনীয় সবকিছু করে কিনা তা প্রশ্ন শুরু করে started
ফ্লিপডব্ট

29
ফ্লিপডব্যাট - কমান্ডটাইমআউট ক্যোয়ারিকে প্রভাবিত করবে, কানেকশনটাইমআউট করবে না। সংযোগটিমআউটটি পিফর্ম প্রশ্নের জন্য সংযোগের সময়সীমা নয় - এটি সংযোগের প্রথম স্থানটিতে ডাটাবেসের সাথে সংযোগ স্থাপনের সময়সীমা মাত্র।
রবিন বেনেট

4
@ জোনস্কিট কমান্ডটাইমআউট এবং কানেকশনটাইমআউট করেন, উভয়ই একই সাধারণ ব্যতিক্রম ঘটায়? নাকি আলাদা ব্যতিক্রম?
ইয়াসের শায়খ

4
@ ইয়াসার: আমি জানি না, আমি ভয় পাই।
জন স্কিটি

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

28

SqlCommand.CommandTimeoutআপনার এসকিউএল ক্যোয়ারীর জন্য = সময়সীমা সীমা। মানে, কত সময়ের জন্য একটি (যেমন: SELECT, UPDATE) ক্যোয়ারী তার সঞ্চালনের জন্য সময় লাগতে পারে। যদি এটি অতিক্রম করে SqlCommand.CommandTimeout, তবে এটি কার্যকর করা বন্ধ করে দেয়। একটি কমান্ড সময়সীমা ত্রুটি ঘটবে।

SqlConnection.ConnectionTimeoutআপনার সংযোগের জন্য = সময়সীমা সীমা। মানে, আপনার সংযোগের অবজেক্টটি সংযোগের জন্য কত সময় চেষ্টা করতে পারে। যদি এটি নির্দিষ্ট সময়ের চেয়ে বেশি হয় তবে এটি সংযোগ বন্ধ করে দেয়। একটি সংযোগের সময়সীমা ত্রুটি ঘটবে।


11

ConnectionTimeoutনির্দিষ্ট করে সময়সীমা যখন প্রয়াস আউট সময়জ্ঞান পূর্বে অপেক্ষা করতে খুলতে একটি SqlConnection। এটি Connection.Open()আদেশের সাথে প্রাসঙ্গিক ।

যখন

SqlCommand.CommandTimeoutসময় নির্ধারিত হওয়ার আগে অপেক্ষা করার জন্য কোনও এসকিএলকম্যান্ডের সময়কাল নির্দিষ্ট করে। কোনও সংযোগ খোলার পরে এবং ExecuteXXXকমান্ড অবজেক্টে একটি পদ্ধতির কল করার পরে এটি ঘটে ।


8

অতিরিক্ত তথ্য

ডিফল্ট মান CommandTimeout30 সেকেন্ড। শূন্য (0) কোনও সীমা নির্দেশ করে না। আপনি CommandTimeoutকেবল কোডিংয়ে মান সেট করতে পারেন ।

এর ডিফল্ট মান ConnectiontTimeout15 সেকেন্ড। শূন্য (0) পাশাপাশি কোনও সীমাও নির্দেশ করে না। শূন্যের চেয়ে কম মান (বিয়োগ মান) পাবে ArgumentException। আপনি ConnectionTimeoutকোডিং এবং কনফিগার ফাইল উভয়ই মান সেট করতে পারেন ।


0
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms

4
এটি একটি তৃতীয় ধরণের টাইমআউট। বিষয়টির মালিক যে দুটি সম্পর্কে জিজ্ঞাসা করেছেন তার মধ্যে একটিও নয়। এবং প্রশ্নের উত্তর দেয় না। আমি এটি -1 করব না, কারণ সম্পাদনার আগে প্রশ্নটি কী ছিল তা আমি জানি না।
সিএসবা তোথ

0

কমান্ডটাইমআউট সম্পর্কিত দ্রুত নোট, যেহেতু এটি সংযোগ এবং কমান্ড উভয় বস্তুরই সম্পত্তি ...

একটি সংযোগ অবজেক্টের কমান্ডটাইমআউট সেটিংস একই সংযোগের কমান্ড অবজেক্টে কমান্ডটাইমআউট সেটিংয়ের কোনও প্রভাব ফেলবে না; তা হ'ল কমান্ড অবজেক্টের কমান্ডটাইমআউট সম্পত্তি সংযোগ বস্তুর কমান্ডটাইমআউট মানটির উত্তরাধিকারী হয় না।

সুতরাং একটি সংযোগ অবজেক্টের কমান্ডটাইমআউট সেটিংস কেবল সংযোগ অবজেক্টের অধীনে সম্পাদিত কমান্ডগুলিকেই প্রভাবিত করে (কোনও কমান্ড অবজেক্ট ব্যবহার না করে)।

উদাহরণস্বরূপ, আপনি যখন কোনও সঞ্চিত প্রকের সাথে সংযোগ স্থাপন করছেন এবং কমান্ড অবজেক্টে প্যারামিটার যুক্ত করছেন এবং কোনও সংযোগ বস্তুর সংযোগ ব্যবহার করে কমান্ড অবজেক্টটি কার্যকর করছেন, তখন আপনাকে উভয়ই ওভাররাইড করার জন্য কমান্ড অবজেক্টে কমান্ডটাইমআউট এবং সংযোগের সময় সংযোগকালীন সময় নির্ধারণ করতে হবে 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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.