जहां .NET सिस्टम में। डेटा नामस्थान कोड निर्धारित करता है, जब अद्यतन-आदेश निष्पादित किया जाता है, चाहे कोई पंक्ति हो क्लाइंट प्रोग्राम ने इसे पढ़ने के बाद एक SQL सर्वर 2K तालिका बदल दी है, यानी कि पंक्ति का क्लाइंट-साइड संस्करण "पुराना" है?.NET System.Data नेमस्पेस डीकंपिलेशन: SQL सर्वर समवर्ती उल्लंघन से संबंधित कोड कहां मिल सकता है
मैं कोड को देखने के लिए एक डिकंपेलर का उपयोग करना चाहता हूं और यह पता लगाता हूं कि यह कैसे निर्धारित करता है कि एक समवर्ती उल्लंघन हुआ है। मुझे पता है कि इसमें तालिका में टाइमस्टैम्प कॉलम और/या @@ rowcount के साथ कुछ करना होगा, लेकिन मैं यह देखना चाहता हूं कि संग्रहीत प्रो में लिपटे एक अद्यतन कमांड को लाइब्रेरी द्वारा निष्पादित किया गया है या नहीं।
संग्रहीत proc इस संरचना होगा:
create proc foo_update
@id int,
@rowversion timestamp,
@val varchar(5)
as
begin
update foo set a = @val
where id = @id and mytimestampcolumn = @rowversion;
end
है, तो कोई पंक्ति अगर यह जहां-खंड जो क्लाइंट साइड System.Data में rowversion तुलना की वजह से बदल गया है अद्यतन किया जाएगा कि। डेटाबेस में पंक्ति के टाइमस्टैम्प मान पर DataRow, और proc सफलतापूर्वक चलाएगा और त्रुटि उत्पन्न नहीं करेगा। फिर भी एसक्ल क्लाइंट पुस्तकालय, उनकी सहायकता में, इस परिदृश्य को एक समवर्ती उल्लंघन के रूप में रिपोर्ट करते हैं।
धन्यवाद
क्या आप 'SqlDataAdapter' का उपयोग कर रहे हैं? आप इसे कैसे बुला रहे हैं इस स्रोत कोड को ढूंढकर आप क्या हासिल करना चाहते हैं, समवर्ती उल्लंघन त्रुटि को बाईपास करें? –
@ जॉर्डनो: मैं देखना चाहता था कि त्रुटि को फेंकने के लिए कौन सी स्थितियां जरूरी थीं, यानी, लाइब्रेरी टाइमस्टैम्प मानों की तुलना कर रही थी, या बस प्रभावित रिकॉर्ड्स की संख्या को देख रही थी। – Tim