"লক অনুরোধের সময়সীমা পেরিয়ে গেছে" ডিবি হাইয়ারচিগুলি দেখার চেষ্টা করার সময় ত্রুটি


17

আমার একটি ডাটাবেস নিয়ে সমস্যা হচ্ছে।

  1. আমি বেসিক ক্যোয়ারীগুলি চালাতে পারি, যদিও স্বাভাবিকের চেয়ে অনেক ধীর।

  2. আমি যখন এসএসএমএস অবজেক্ট এক্সপ্লোরারে সারণী, দর্শন বা পদ্ধতিগুলির জন্য শ্রেণিবদ্ধ গাছগুলি দেখার চেষ্টা করি তখন আমি পাই lock request time out period exceeded

  3. আমার এসএসআরএস রিপোর্ট করে যে এই ডাটাবেসে বস্তুর উপর চালানো আর শেষ হচ্ছে না।

  4. এই ডাটাবেসে সঞ্চিত পদ্ধতিগুলির সাথে যুক্ত কাজগুলিও চলবে না।

আমি sp_who2ডেটাবেজে সমস্ত সংযোগ সন্ধান এবং হত্যা করার চেষ্টা করেছিলাম , তবে এটি সমস্যার সমাধান করেনি।

এখানে কি হচ্ছে? আমি কীভাবে এটি সমাধান করতে পারি?


আরও দেখুন: স্ট্যাকওভারফ্লো . com / প্রশ্নগুলি / 12167570/… ; নিশ্চিত না যে এটি একটি সদৃশ হিসাবে গণনা করা হয় বা না।
লিটলববিটাইবলস - অউ রিভায়ার

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

3
আপনার মত শোনার মতো উন্মুক্ত লেনদেন যা টেবিলগুলিতে পঠিত অ্যাক্সেসকে বাধা দিচ্ছে।
a_horse_with_no_name

উত্তর:


11

এটি কোনও লেনদেনের স্থায়ী রোলব্যাকের কারণে ঘটছিল। শেষ পর্যন্ত আমার সার্ভার ক্লাস্টারটি পুনরায় চালু করতে হবে


2
পরিষেবাটি পুনরায় চালু করা আমার পক্ষে এটি সমাধান হয়েছে।
HerrimanCoder

এই পরিস্থিতিতে পুনরায় চালু করা আপনাকে ডেটাবেস রিকভারি
MaazKhan47

খোলার লেনদেন হলে ডিবিসিসি ওপেনট্রান আপনাকে জানাবে
ন্যাট অ্যান্ডারসন

আমি এটিকে অদ্ভুত বলে মনে করি যে কোনও লেনদেন চলাকালীন আমি উদাহরণস্বরূপ সারণী বিভাগটি প্রসারিত করতে পারি না। কোনও ডেটা পড়া হয়নি, কোনও ডিডিএল নেই, কিছুই নেই, কেবল টেবিলের তালিকা।
গ্রিলিম

5

হারওয়ার বিবেচনা বাদ দিয়ে, সম্ভবত আপনাকে এসকিউএল সেশনটি কীভাবে আটকাচ্ছে সেই কার্যকলাপগুলি কী তা পরীক্ষা করতে স্ক্রিপ্টটি চালানো দরকার, সাধারণ দৃশ্যের একটি হচ্ছে Implicit transactions Optionএসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে কোনও ব্যবহার না করা ।


হাই টারবোট, আপনি কী পরামর্শ দিচ্ছেন সে সম্পর্কে আরও বিশদে যেতে পারেন?

দেখে মনে হচ্ছে এটি পুরোপুরি ব্যাখ্যা না করার পরে এটি আরও উত্তম উত্তর হতে পারে, লেনদেনের চিরস্থায়ী রোলব্যাক যা পিছনে ফিরে আসে না এবং কেবল অন্তর্নিহিত লেনদেনের কারণে সক্ষম হয়।
কনস্টান্টাইনেকে

প্রশ্নটির পিছনে ফিরে আমি বলতে পারি না এটি অবশ্যই কোনও লেনদেনের চিরস্থায়ী রোলব্যাক হতে পারে। locking request time out period exceedআমি বিচার করে বলব দৌড়ে implicit transaction optionযাওয়ার কারণগুলির আরও ভাল ধারণা দেওয়া হবে।
টারবোট

টুলস / বিকল্প / ক্যোয়ারী এক্সেকিউশন / SQL সার্ভার / ANSI / সেট অন্তর্নিহিত লেনদেনের
Tadej

3

আমি এই সমস্যাটি পেয়েছি যখন আমি একটি স্পষ্ট লেনদেন শুরু করেছিলাম যেখানে আমি অন্য ডাটাবেসে চালিত স্ক্রিপ্ট থেকে টেম্পডবিতে একটি টেবিল তৈরি করেছি (টেম্পডিবি নয়)। আমি যখন লেনদেন করার জন্য প্রতিশ্রুতিবদ্ধ হয়েছিলাম তখন প্রতিশ্রুতিটি টেম্পডিবির তৈরি টেবিলটিতে লকটি প্রকাশ করবে বলে মনে হয় না।

এই পৃষ্ঠায় ধন্যবাদ , আমি USEটেম্পডিবি করেছি এবং সম্পাদন করেছি DBCC OPENTRANএবং লক তৈরি করার কারণে টেম্পডিবির সংযোগের এসপিআইডি পেয়েছি। তাহলে আমি KILL <SPID number>এটা মেরে ফেলব।

খুব করুণাময় নয়, এবং আমি টেম্পডবিতে তৈরি টেবিলের সমস্ত তথ্য হারিয়েছি, তবে এটি আমার ক্ষেত্রে ঠিক ছিল।


আমাদের ক্ষেত্রে, একটি ডিএমএল কমান্ড ( পুনর্নির্ধারণের দৃশ্য দেখুন) কমিট ট্রান্সেকশন ছাড়াই সেট ইমপ্লিক্ট ট্রান্সএকশনস ব্যবহার করে পুনরায় ডাটাবেস জারি করা হয়েছিল , যা দুর্ঘটনাক্রমে দীর্ঘস্থায়ী লেনদেনের কারণ হয়ে দাঁড়ায় । ডিবিসিসি ওপেনট্রান ব্যবহার করে দ্রুত এই সমস্যাটি সনাক্ত করতে সহায়তা করেছে।
জুলিও নোব্রে

1

এটি অনেক কিছুই হতে পারে যা আমি যে অফার করতে পারি তা হ'ল কয়েকটি প্রশ্নের উত্তর যা আপনাকে উত্তরের দিকে পরিচালিত করতে সহায়তা করে।

  1. কোনও সার্ভারে ডিবি কি কেবল এসকিউএল সার্ভার চালানোর জন্য নিবেদিত? যদি তা না হয় তবে মূল্যবান প্রসেসরের সময় চুরি করে অন্যান্য প্রক্রিয়াগুলি হস্তক্ষেপ করতে পারে।

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

  3. সময়োপযোগীভাবে ডেটা স্থানান্তর করার জন্য ডিবি সার্ভারের নেটওয়ার্ক ব্যান্ডউইথটি কি ছোট থেকে যায়?


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

এর অর্থ দ্রুত প্রসেসর, দ্রুত ড্রাইভগুলি ব্যবহার করা বা আরও বেশি র‌্যাম ইনস্টল করা।


এটি কোনও হার্ডওয়ার সমস্যা নয়। সার্ভার ক্লাস্টার একাধিক ডাটাবেস হোস্ট করে। এটিই কেবলমাত্র ডাটাবেসের

@ লয়ডব্যাঙ্কস: এর অর্থ এই নয় যে এটি কোনও হার্ডওয়ার সমস্যা নয়। যদি আমার কাছে 2 টি ডাটাবেস থাকে, যার একটি উচ্চ লেনদেনের হারের আকারের 20 গিগাবাইট এবং অন্যটি হ'ল 1 জিবি কম লেনদেনের হারের সাথে থাকে তবে আমি আশা করব যে 1 জিবি ডিবি ভার্চুয়াল মেমোরিতে সরে যাবে; যা কোয়েরি বার বাড়িয়ে দেবে। যদি 20 গিগাবাইট ডিবি যথেষ্ট পরিমাণ চাপ দিচ্ছিল, এটি ছোটটির সাথে সংযোগের সমস্যার দিকে নিয়ে যেতে পারে।
NotMe

1

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

আমার ঠিক একই সমস্যা ছিল। আমি ক্যোয়ারী এক্সিকিউশন উইন্ডোতে গিয়েছিলাম এবং; টাইপ করা এবং সম্পাদিত ROLLBACKবিবৃতি।

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


0

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

যাইহোক, আপনি নিম্নলিখিত কোয়েরি ব্যবহার করে দীর্ঘস্থায়ী মুলতুবি লেনদেনের একটি তালিকা পেতে পারেন।

SELECT
    [s_tst].[session_id],
    [s_es].[login_name] AS [Login Name],
    DB_NAME (s_tdt.database_id) AS [Database],
    [s_tdt].[database_transaction_begin_time] AS [Begin Time],
    [s_tdt].[database_transaction_log_bytes_used] AS [Log Bytes],
    [s_tdt].[database_transaction_log_bytes_reserved] AS [Log Rsvd],
    [s_est].text AS [Last T-SQL Text],
    [s_eqp].[query_plan] AS [Last Plan]
FROM
    sys.dm_tran_database_transactions [s_tdt]
JOIN
    sys.dm_tran_session_transactions [s_tst]
ON
    [s_tst].[transaction_id] = [s_tdt].[transaction_id]
JOIN
    sys.[dm_exec_sessions] [s_es]
ON
    [s_es].[session_id] = [s_tst].[session_id]
JOIN
    sys.dm_exec_connections [s_ec]
ON
    [s_ec].[session_id] = [s_tst].[session_id]
LEFT OUTER JOIN
    sys.dm_exec_requests [s_er]
ON
    [s_er].[session_id] = [s_tst].[session_id]
CROSS APPLY
    sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
OUTER APPLY
    sys.dm_exec_query_plan ([s_er].[plan_handle]) AS [s_eqp]
where [s_tdt].[database_transaction_begin_time] is not null
ORDER BY
    [Begin Time] ASC;

https://www.brentozar.com/archive/2018/02/set-implicit_transactions-one-hell-bad-idea/

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