मैं मिला है समस्याओं विभाजन कार्यों हो रही बड़े पैमाने पर काम करने के लिए। बनाएं और ड्रॉप पार्टिशन अवरुद्ध करने वाले ऑपरेशन हैं, और आपके पास अवरोधन पर थोड़ा नियंत्रण नहीं है, और यदि यह लॉक नहीं मिल पाता है तो यह गंभीरता स्तर 16 के साथ असफल हो जाएगा और आपके कनेक्शन को मार देगा - जिसे आप जासूसी नहीं कर सकते हैं और पुन: स्थापित किए बिना पुनः प्रयास कर सकते हैं संपर्क। लेकिन यह आपके लिए ठीक काम कर सकता है। इसके अलावा, एमएसएस एंटरप्राइज़ संस्करण की आवश्यकता है, आप एसई का उपयोग नहीं कर सकते हैं - कुछ छोटी या अधिक लागत से संबंधित दुकानों के लिए बहुत अधिक हो सकता है।
मुझे sys टेबल और ऑब्जेक्ट्स पर उच्च-स्तरीय (= लेन-देन वॉल्यूम + लगातार मामले में लगातार डेटा डालने की मात्रा) को अवरुद्ध करने के लिए व्यू रेडफ भी मिला है, इसलिए वे ऑपरेशन रीइंडेक्सिंग जैसी चीज़ों पर डेडलॉक कर सकते हैं और डीटीसीसी - और एक मामले में, विशेष रूप से एसएसएमएस (सभी चीजों में) के उपयोगकर्ता के साथ ऑब्जेक्ट एक्सप्लोरर में दृश्य ब्राउज़ करने की कोशिश कर रहा है (किसी को उन लोगों को रीडपास्ट के बारे में बताने की जरूरत है)। फिर, आपका लाभ भिन्न हो सकता है।
इसके विपरीत, sp_rename मेरे लिए स्केल पर अच्छा काम करता है: यह आपको लॉकिंग और इसके दायरे पर नियंत्रण देता है। स्वैप से पहले अवरुद्ध करने के मुद्दे को हल करने के लिए, नीचे दिखाए गए अनुसार इसे आजमाएं। चेहरे के मूल्य पर यह उच्च मात्रा में समान पैमाने पर समस्या प्रतीत होता है ... लेकिन मैंने इसे अभ्यास में नहीं देखा है। तो, मेरे लिए काम करता है ... लेकिन फिर, हर किसी की जरूरतें और अनुभव अलग हैं।
DECLARE @dummylock bit
BEGIN TRANSACTION
BEGIN TRY
-- necessary to obtain exclusive lock on the table prior to swapping
SELECT @dummylock = 1 WHERE EXISTS (SELECT 1 FROM A WITH (TABLOCKX))
-- may or may not be necessary in your case
SELECT @dummylock = 1 WHERE EXISTS (SELECT 1 FROM B WITH (TABLOCKX))
exec sp_rename 'A', 'TEMP'
exec sp_rename 'B', 'A'
exec sp_rename 'TEMP', 'B'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
-- other error handling here if needed
ROLLBACK TRANSACTION
END CATCH
मैं SQL सर्वर 2000 का उपयोग कर रहा हूं। IpToCountryOld अप्रासंगिक है और वास्तव में इसे छोटा कर दिया गया था और गिरा दिया जा सकता था। मैं नाम बदल रहा हूं क्योंकि यह तेज़ है, फिर मैं पुरानी टेबल हटा देता हूं ... –