ডেডলক ত্রুটি ডেডলক এসকিউএল ফিরিয়ে দিচ্ছে না


13

Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

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

আমি চেষ্টা করব এবং অচলাবস্থাকে নিজেই একটি পৃথক সমস্যা হিসাবে ডিবাগ করব কারণ এটি আপাতত আমার মূল প্রশ্ন।

আমি এসকিউএল সার্ভার 2008 স্ট্যান্ডার্ড সংস্করণ ব্যবহার করছি।


আপনি কি পরিষেবাটি পুনরায় চালু করতে সক্ষম? আপনি যদি পরিষেবাটি বাউন করতে সক্ষম হন তবে আপনি এসকিউএল সার্ভার লগের অচলিত বিবরণ লগ করতে আপনার প্রারম্ভিক প্যারামিটারগুলিতে ট্রেস পতাকা 1204 যুক্ত করতে পারেন। > 1204: অচলাবস্থায় অংশ নেওয়া সংস্থানসমূহ এবং ধরণের লকগুলিকে এবং বর্তমান কমান্ডকে প্রভাবিত করে ফিরিয়ে দেয়। >> স্কোপ: কেবলমাত্র গ্লোবাল
তেভো ডি

1
কনফিগারেশন ম্যানেজার ব্যবহার করুন। এসকিউএল সার্ভার পরিষেবাদিগুলির অধীনে, ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি খুলুন। উন্নত ট্যাবে যান, প্রারম্ভিক পরামিতি। মাস্টার ডাটাবেস ফাইল এবং এর মতো অবস্থানগুলির জন্য আপনার কাছে এন্ট্রি থাকবে। ;-T1204ট্রেস পতাকাটি যোগ করুন এবং পরিষেবাটি পুনরায় চালু করতে।
তেভো ডি

4
কেন পরিষেবাটি পুনরায় চালু করবেন? ডিবিসিসি ট্র্যাকিয়ন (1204, -1)
মার্ক

থেকে msdn.microsoft.com/en-us/library/ms188396.aspx : আচরণগুলিকে পরিবর্তন: এসকিউএল সার্ভার 2000, একটি সহজ DBCC TRACEON (1204) ত্রুটি লগে অচলাবস্থা প্রতিবেদন সক্ষম যথেষ্ট। এসকিউএল সার্ভার ২০০৮ এ, আপনাকে অবশ্যই বিশ্বব্যাপী পতাকাটি সক্ষম করতে হবে কারণ সেশন-স্তরের পতাকাটি ডেডলক মনিটরের থ্রেডটিতে দৃশ্যমান নয়।
তেভো ডি

2
@ ট্যাভোডি - বিশ্বব্যাপী প্রকাশের -1পরামিতি DBCC TRACEON
মার্টিন স্মিথ

উত্তর:


25

আপনার প্রয়োজনীয় ডেটা ডিফল্ট বর্ধিত ইভেন্টগুলির ট্রেসে রেকর্ড করা হয়েছে।

DECLARE @xml XML

SELECT @xml = target_data
FROM   sys.dm_xe_session_targets
       JOIN sys.dm_xe_sessions
         ON event_session_address = address
WHERE  name = 'system_health'
       AND target_name = 'ring_buffer'

SELECT   
             XEventData.XEvent.query('(data/value/deadlock)[1]')  AS DeadlockGraph,
             CAST(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') AS XML) AS DeadlockGraph,
              XEventData.XEvent.value('(./@timestamp)[1]', 'DATETIME2') AS [DateTime]
FROM   (SELECT @xml AS TargetData) AS Data
       CROSS APPLY 
       TargetData.nodes ('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData (XEvent) 
ORDER BY [DateTime] DESC

যদিও আপনি আর কোনও চিহ্ন পাবেন না যদি আপনি কোনও ট্রেস পতাকা প্রয়োগ করার জন্য পরিষেবাটি পুনরায় চালু করেন বা যদি বাফার এর মধ্যে সাইকেল চালিয়ে যায় তবে।

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

সম্পাদন করা

  1. @ মার্টিনসি মন্তব্যগুলিতে উল্লেখ করেছেন যে এসকিউএল সার্ভারের যে সমস্ত আপডেট নেই সেখানে উদাহরণস্বরূপ এটি অবৈধ এক্সএমএল তৈরি করতে সমস্যা হতে পারে। এটির জন্য সমাধানটি কিছু বর্ণিত অনুসন্ধান এবং প্রতিস্থাপন এবং এখানে বর্ণিত হিসাবে তালিকায় ব্যবহার CAST(REPLACE(REPLACE(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraphকরা ।SELECT
  2. ওয়েন শেফিল্ড ট্যাবুলার বিন্যাসে অচলাবস্থা গ্রাফ এক্সএমএল ছিন্নাংশ জন্য একটি দরকারী স্ক্রিপ্ট পোস্ট করেছে এখানে

দুঃখের বিষয়, EE সমস্ত অচল ক্যাপচারগুলি ক্যাপচার করে না এবং এটি একটি বাগ বলে মনে হচ্ছে: সংযুক্ত.মাইক্রোসফট
ম্যাট

3

গৃহীত উত্তর ধারাবাহিকভাবে আমার জন্য কাজ করে নি। রিং বাফার স্পষ্টতই কিছু পরিস্থিতিতে ইভেন্টগুলি ফেলে যাওয়ার জন্য পরিচিত is

ConnectItem

রিং বাফার ইস্যু

সিস্টেম_স্বাস্থ্য লগ ইভেন্ট ফাইলগুলি পার্স করতে পারে ( এই উত্তর থেকে ):

with XmlDeadlockReports as
(
  select convert(xml, event_data) as EventData
  from sys.fn_xe_file_target_read_file(N'system_health*.xel', NULL, NULL, NULL)
  where substring(event_data, 1, 50) like '%"xml_deadlock_report"%'  
) 
select EventData.value('(event/@timestamp)[1]', 'datetime2(7)') as TimeStamp,
       EventData.query('event/data/value/deadlock') as XdlFile
  from XmlDeadlockReports
 order by TimeStamp desc

XdlFile ক্ষেত্রটি .xdl ফাইলে সংরক্ষণ করা যায় এবং এসএসএমএসে পড়তে পারে। SQL সার্ভার 2012-এ পরীক্ষা করা হয়েছে।

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