এসকিউএল সার্ভারের সংযোগের সময়সীমা


109

আমি সংযোগের স্ট্রিংটি সংশোধন করে টাইমআউট বাড়াতে পারি web.config?


7
এটুকু পড়বেন না আমি ভেবেছিলাম যে টাইমআউটটি ক্যোয়ারী এক্সিকিউশনকে নিয়ন্ত্রণ করবে - এটি নয়, কেবলমাত্র সার্ভারের সাথে সংযোগ করার সময়সীমা - "কানেক্টিং টাইমআউট" আরও ভাল নাম হবে। দেখুন stackoverflow.com/a/7976867/409856
downwitch

উত্তর:


213

হ্যাঁ, আপনি ;Connection Timeout=30আপনার সংযোগের স্ট্রিংয়ে সংযোজন করতে পারেন এবং আপনার পছন্দসই মানটি নির্দিষ্ট করতে পারেন।

Connection Timeoutসম্পত্তিতে টাইমআউট মান সেট করা সেকেন্ডে প্রকাশিত সময় । যদি এই সম্পত্তিটি সেট না করা থাকে তবে সংযোগের সময়সীমা মান হ'ল ডিফল্ট মান (15 সেকেন্ড)।

তদুপরি, সময়সীমা মানটি সেট করে 0আপনি উল্লেখ করছেন যে আপনার সংযোগের প্রয়াস অসীম সময়ের জন্য অপেক্ষা করছে। ডকুমেন্টেশনে বর্ণিত হিসাবে, এটি এমন কিছু যা আপনার সংযোগের স্ট্রিংয়ে সেট করা উচিত নয়:

0 এর মান কোনও সীমাবদ্ধতা নির্দেশ করে না এবং একটি সংযোগস্ট্রিং এ এড়ানো উচিত কারণ সংযোগের চেষ্টা অনির্দিষ্ট সময়ের জন্য অপেক্ষা করে।


4
এই টাইমআউটটি মিনিট বা সেকেন্ডে?
ব্যবহারকারী 1

1
@ ব্যবহারকারী 1 "প্রচেষ্টাটি শেষ করে এবং ত্রুটি উত্পন্ন করার আগে সার্ভারের সাথে সংযোগের জন্য অপেক্ষা করার জন্য সময় (সেকেন্ডে) দৈর্ঘ্য।"
সান্টাক্স

5
এফওয়াইআই: সংযোগের সময়সীমা = 0 অসীম।
আব্দুল সবুর

আপনি কি এর জন্য উদাহরণ দিতে পারেন? আমি যখন আমার কোনও টেস্টে 3 মিলিয়ন ডেটা থাকে EF6 ব্যবহার করি যখন আমি কিছু প্রক্রিয়া প্রোগ্রাম করি তখন সময়সীমা ত্রুটি ফিরে আসে ... দ্রষ্টব্য: আমি টেবিলে ইনডেক্সিং করছি
সুল্যাসার

4
@ সৌলিয়াসর এটি সংযোগের সময় শেষ, কম্যান্ডের সময়সীমা শেষ না করে। সংযোগের সময়সীমাটি কতক্ষণ এটি স্কুয়েল সার্ভারে সংযোগ স্থাপনের চেষ্টা করবে। আপনি COMAMAND সময়সীমা তদন্ত করতে চান, এটি সময় নির্ধারণের আগে কোনও পদ্ধতি বা বিবৃতি কত দিন চালিত হয়।
গ্রানাডা কোডার

32

হুমমম ...

ডারিন যেমন বলেছিলেন, আপনি একটি উচ্চ সংযোগের সময়সীমা মান নির্দিষ্ট করতে পারেন তবে আমি সন্দেহ করি এটি সত্যিই সমস্যা।

আপনি যখন সংযোগের সময়সীমা পান, সাধারণত নিম্নলিখিতগুলির মধ্যে একটিতে এটি সমস্যা:

  1. নেটওয়ার্ক কনফিগারেশন - আপনার ওয়েব সার্ভার / ডেভ বাক্স এবং এসকিউএল সার্ভারের মধ্যে ধীর সংযোগ। সময়সীমা বাড়ানো এটিকে সংশোধন করতে পারে তবে অন্তর্নিহিত সমস্যাটি তদন্ত করা বুদ্ধিমানের কাজ হবে।

  2. সংযোগ স্ট্রিং। আমি এমন সমস্যাগুলি দেখেছি যেখানে কোনও ভুল ব্যবহারকারীর নাম / পাসওয়ার্ড কোনও কারণে "অ্যাক্সেস অস্বীকৃত" নির্দেশ করে আসল ত্রুটির পরিবর্তে একটি সময়সীমা ত্রুটি দেয়। এটি হওয়া উচিত নয়, তবে জীবন এটি।

  3. সংযোগ স্ট্রিং 2: আপনি যদি সার্ভারের নামটি ভুলভাবে বা অসম্পূর্ণভাবে (উদাহরণস্বরূপ mysqlserverপরিবর্তে mysqlserver.webdomain.com) নির্দিষ্ট করে থাকেন তবে আপনি একটি সময়সীমা পেয়ে যাবেন। কমান্ড লাইন থেকে সংযোগ স্ট্রিং-এ উল্লিখিত ঠিকানার মতো সার্ভারের নাম ব্যবহার করে আপনি সার্ভারকে পিং করতে পারেন ?

  4. সংযোগ স্ট্রিং 3: যদি সার্ভারের নামটি আপনার ডিএনএসে থাকে (বা হোস্ট ফাইল), তবে একটি ভুল বা অ্যাক্সেস অ্যাক্সেসযোগ্য আইপি-র প্রতি নির্দেশ করে, আপনি একটি মেশিন-না-পাওয়া-ইশ ত্রুটির পরিবর্তে একটি সময়সীমা পেয়ে যাবেন।

  5. আপনি যে ক্যোয়ারীতে কল করছেন তার সময় শেষ হচ্ছে। এটি সার্ভারের সাথে সংযোগ সমস্যা হিসাবে দেখা যায় তবে আপনার অ্যাপটি কীভাবে স্ট্রাকচারিত হয় তার উপর নির্ভর করে আপনি সময় শেষ হওয়ার আগে আপনার ক্যোয়ারি কার্যকর করা হচ্ছে এমন পর্যায়ে পৌঁছাতে পারবেন।

  6. সংযোগ ফাঁস। কতটি প্রক্রিয়া চলছে? কতগুলি মুক্ত সংযোগ? আমি নিশ্চিত না যে কাঁচা ADO.NET সংযোগ পুলিং সঞ্চালন করে, প্রয়োজনীয় আলা এন্টারপ্রাইজ লাইব্রেরি যখন স্বয়ংক্রিয়ভাবে সংযোগগুলি বন্ধ করে দেয় বা যেখানে কনফিগার করা আছে সেখানে। এটি সম্ভবত একটি লাল উত্তেজনা। ডাব্লুসিএফ এবং ওয়েব পরিষেবাদিগুলির সাথে কাজ করার সময়, যদিও আমার অবসন্ন সংযোগগুলির সাথে সমস্যা হয়েছিল যার ফলে সময়সীমা এবং অন্যান্য অনিচ্ছাকৃত আচরণ ঘটে।

চেষ্টা করার বিষয়গুলি:

  1. এসকিউএল ম্যানেজমেন্ট স্টুডিওর সাথে সার্ভারের সাথে সংযোগ করার সময় আপনি কী সময়সীমা পেয়েছেন? যদি তা হয় তবে নেটওয়ার্ক কনফিগারেশনে সমস্যা সম্ভবত। ম্যানেজমেন্ট স্টুডিওর সাথে সংযোগ করার সময় আপনি যদি সমস্যাটি না দেখেন তবে সমস্যাটি আপনার অ্যাপটিতে থাকবে, সার্ভারের সাথে নয়।

  2. এসকিউএল প্রোফাইলার চালান, এবং তারের জুড়ে আসলে কী চলছে তা দেখুন। আপনি সত্যিই সংযোগ করছেন কিনা তা বলতে সক্ষম হওয়া উচিত, বা কোনও ক্যোয়ারী যদি সমস্যা হয়।

  3. ম্যানেজমেন্ট স্টুডিওতে আপনার ক্যোয়ারি চালান, এবং এটি কতক্ষণ সময় নেয় তা দেখুন।

শুভকামনা!


যদি আপনার ক্যোয়ারির সময়সীমা শেষ হয়ে যায় তবে আমি অনুমান করি আপনি একটি কমান্ডটাইমআউট পাবেন
user55474

@ user55474 সম্ভবত; কীভাবে এটি ডাকা হচ্ছে তার উপর নির্ভর করে ( খুব কমই)।
ডিভে

এই এমএসডিএন ব্লগ পোস্ট অনুসারে নয়: ব্লগস.এমএসএনএন / বি / স্পাইক / অর্চিভ / ২০০৮/০/0 / ২০১…
টম

@ হু আমি বিশ্বাস করি আমি বলেছিলাম যে এটি বিরল, তবে আমি এটি প্রথম হাতে দেখেছি।
ডিভে

1
"এসকিউএল প্রোফাইলার রান করুন" এর জন্য +1। দেখে মনে হচ্ছে এটি জটিল হবে তবে আপনি কেবল "সরঞ্জাম> এসকিউএল সার্ভার প্রোফাইলার" ক্লিক করুন এবং আপনার অ্যাপ্লিকেশনটি এসকিউএল সার্ভারকে কী বলছে তা দেখুন। দেখা যাচ্ছে আমার অপশন # 5 :) ছিল
অ্যান্ড্রু কোভিক

11

আপনি যদি এটিকে গতিশীলভাবে পরিবর্তন করতে চান তবে আমি SQLConnectionStringBuilder ব্যবহার পছন্দ করি

এটি আপনাকে সংযোগস্ট্রিং অর্থাৎ স্ট্রিংকে ক্লাস অবজেক্টে রূপান্তর করতে দেয়, সমস্ত সংযোগের স্ট্রিং বৈশিষ্ট্যই এর সদস্য হয়ে উঠবে।

এক্ষেত্রে আসল সুবিধাটি হ'ল আপনার যদি চিন্তা করতে হবে না যে কানেকশনটাইমআউট স্ট্রিং অংশটি ইতিমধ্যে সংযোগের স্ট্রিংয়ে উপস্থিত রয়েছে কিনা?

এটি যেমন কোনও অবজেক্ট তৈরি করে এবং স্ট্রিংকে ম্যানিপুলেট করার চেয়ে অবজেক্টে মান নির্ধারণ করা সর্বদা ভাল।

কোড নমুনা এখানে:

var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString);

sscsb.ConnectTimeout = 30;

var conn = new SqlConnection(sscsb.ConnectionString);

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