मैं अपने आवेदन का परीक्षण कर रहा हूं मुझे कुछ कोड की आवश्यकता है जो डेटाबेस साइट पर गतिरोध को स्थिर करता है (यदि संभव हो तो sql स्क्रिप्ट)।
धन्यवाद।
जोड़े गए:
मैं अपने आवेदन का परीक्षण कर रहा हूं मुझे कुछ कोड की आवश्यकता है जो डेटाबेस साइट पर गतिरोध को स्थिर करता है (यदि संभव हो तो sql स्क्रिप्ट)।
धन्यवाद।
जोड़े गए:
जवाबों:
सबसे अच्छा तरीका यह होगा कि आपके पास पहले से मौजूद टेबल का उपयोग किया जाए। दो टेबल बनाएं - टेबल-ए, टेबल-बी एक परीक्षण के लिए आप एक ही जानकारी के साथ एक ही कॉलम को अपडेट कर सकते हैं ताकि आप किसी भी वास्तविक डेटा को प्रभावित न करें।
उदाहरण के लिए UPDATE टेबल_ए सेट आईडी = आईडी जहां आईडी = 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
( msdn.microsoft.com/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 में उपयोग की जाने वाली स्क्रिप्ट
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)
इस पर अतिरिक्त विवरण के लिए, http://ajitananthram.wordpress.com/2014/02/23/scripts-to-force-a-deadlock-in-sql-server/ देखें।