আমি আমার অ্যাপ্লিকেশনটি পরীক্ষা করছি আমার এমন কিছু কোড দরকার যা স্থির করে ডেটাবেস সাইটে ডেডলকটি সিমুলেট করে (সম্ভব হলে স্কয়ার স্ক্রিপ্ট)।
ধন্যবাদ.
যোগ করেছেন:
আমি আমার অ্যাপ্লিকেশনটি পরীক্ষা করছি আমার এমন কিছু কোড দরকার যা স্থির করে ডেটাবেস সাইটে ডেডলকটি সিমুলেট করে (সম্ভব হলে স্কয়ার স্ক্রিপ্ট)।
ধন্যবাদ.
যোগ করেছেন:
উত্তর:
সবচেয়ে ভাল উপায় হ'ল আপনার কাছে ইতিমধ্যে থাকা সারণীগুলি ব্যবহার করা। দুটি টেবিল তৈরি করুন - টেবিল-এ, টেবিল-বি একটি পরীক্ষার জন্য আপনি একই তথ্যের সাথে একই কলামটি আপডেট করতে পারেন যাতে আপনি কোনও বাস্তব ডেটা প্রভাবিত করেন না।
উদাহরণস্বরূপ আপডেটের টেবিল_এ সেট আইডি = আইডি যেখানে আইডি = 100;
একই ডাটাবেসে দুটি সেশন খুলুন। এক, চালান
BEGIN TRAN
update table_a set ID=ID where ID = 100;
দুই রান
BEGIN TRAN
update table_b set ID=ID where ID =100;
তারপরে, আপডেটের বিবৃতিগুলি বিরোধী সেশনে অনুলিপি করুন এবং একই সময়ে চালান। একটি,
update table_b set ID=ID where ID =100;
দুইটাতে
update table_a set ID=ID where ID = 100;
আমি এখনই এটি চেষ্টা করেছি এবং এমএস-এসকিউএল পেয়েছি
Msg 1205, Level 13, State 56, Line 1
Transaction (Process ID 23) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
sp_getapplock
আপনার স্যাম্পল কোডটিতে কখন কী লক প্রয়োজন তা নিতে সিস্টেম সঞ্চিত পদ্ধতিটি ব্যবহার করুন ।
কড়া কথায় বলতে গেলে এটি একটি ডিজকস্ট্রা সেমোফোর । এখনও অভিশাপ দরকারী যদিও
sp_getapplock
একটি ত্রুটি নিক্ষেপ করবে না। এটি হয় সময়সীমাটির মেয়াদ শেষ হওয়ার জন্য অপেক্ষা করবে, বা (যদি কোনও সময়সীমা না থাকে), ফিরে আসুন-3
( এমএসডিএন.মাইক্রোসফটকম /en-us/library/ms189823.aspx )
এখানে উপরে পোস্ট করা জাতীয়টির মতোই অন্য একটি পদ্ধতি রয়েছে>
CREATE TABLE Tbl1 (id INT NOT NULL PRIMARY KEY CLUSTERED, col INT)
CREATE TABLE Tbl2 (id INT NOT NULL PRIMARY KEY CLUSTERED, col INT REFERENCES dbo.Tbl1(id))
প্রশ্ন উইন্ডো # 1 এ ব্যবহৃত স্ক্রিপ্ট used
BEGIN TRAN
INSERT dbo.Tbl1 (id, col) VALUES (2, 999)
প্রশ্ন উইন্ডো # 2 এ স্ক্রিপ্ট ব্যবহৃত হবে
BEGIN TRAN
INSERT dbo.Tbl2 (id, col) VALUES (111, 2)
প্রশ্ন উইন্ডো # 1 এ স্ক্রিপ্ট যুক্ত করা হবে
INSERT dbo.Tbl2 (id, col) VALUES (111, 555)
এ সম্পর্কে অতিরিক্ত তথ্যের জন্য, দেখুন: