2009-05-12 17 views
12

मेरे पास एसक्यूएल व्यू पर आरओ एक्सेस है। यह क्वेरी समय से बाहर है। इससे कैसे बचें?एसक्यूएल क्वेरी टाइमआउट से बचने के लिए कैसे करें

select 
    count(distinct Status) 
from 
    [MyTable] with (NOLOCK) 
where 
    MemberType=6 

त्रुटि संदेश मैं मिलता है:

Msg 121, Level 20, State 0, Line 0

A transport-level error has occurred when receiving results from the server (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

+0

त्रुटि प्राप्त करने से पहले यह कितना समय तक जाता है? – codeulike

+0

यह 15-20 मिनट –

+0

तक चलता है जो कि एक लंबा समय है। क्या [MyTable] आपके उदाहरण में तालिका या दृश्य के ऊपर है? यदि यह एक दृश्य है तो कृपया दृश्य परिभाषा पोस्ट करें और हम अनुकूलन को आजमा सकते हैं और सुझाव दे सकते हैं। – codeulike

उत्तर

6

हालांकि स्पष्ट रूप से अपने कनेक्शन के साथ हस्तक्षेप नेटवर्क अस्थिरता या कुछ और किसी तरह का है (15 मिनट के लिए संभव है यदि आप एक नेट सीमा या अपने नेटवर्क में कुछ को पार किया जा सकता है कि सत्र गिरती है), मैं क्या आपको लगता है कि आप इतनी सरल चाहते हैं?) किसी भी अनुमानित टाइमौ (जैसे 1 एस) में अच्छी तरह से लौटने के लिए क्वेरी।

मैं अपने डीबीए के लिए बात करते हैं और सदस्य प्रकार, स्थिति पर अंतर्निहित टेबल पर बनाई गई एक सूचकांक मिलेगा। यदि कोई अंतर्निहित तालिका नहीं है या ये दृश्य या यूडीएफ द्वारा अधिक जटिल और बनाई गई हैं, और आप SQL Server 2005 या ऊपर चल रहे हैं, तो क्या उन्हें दृश्य को अनुक्रमणित करने पर विचार करें (मूल रूप से अनुक्रमित फैशन में दृश्य को भौतिक रूप से चित्रित करना)।

2

आप सदस्य प्रकार पर एक सूचकांक डाल सकता है।

+0

यदि वह एक दृश्य का उपयोग कर रहा है, जैसा कि कहा गया है, तो यह मुश्किल होगा ... – MicSim

+0

आरओ एक्सेस शायद एक समस्या का अधिक है, लेकिन डीबीए से इसे तालिका में जोड़ने के लिए कह सकता है। – JeffO

1

क्या आपके पास स्टेटस कॉलम और सदस्य टाइप कॉलम पर परिभाषित इंडेक्स है?

21

आपकी क्वेरी शायद ठीक है। "सेमफोर टाइमआउट अवधि समाप्त हो गई है" एक नेटवर्क त्रुटि है, SQL सर्वर टाइमआउट नहीं।

उदा। देख http://support.microsoft.com/kb/325487

वहाँ जाहिरा तौर पर आप और SQL सर्वर के बीच नेटवर्क समस्या के कुछ प्रकार है।

संपादित करें: हालांकि, जाहिरा तौर पर क्वेरी 15-20 मिनट के लिए नेटवर्क त्रुटि देने से पहले चलाता है। यह बहुत लंबा समय है, इसलिए शायद नेटवर्क त्रुटि लंबे निष्पादन समय से संबंधित हो सकती है। अंतर्निहित दृश्य का अनुकूलन मदद कर सकता है।

हैं [MyTable] अपने उदाहरण में इतना है कि हमारे द्वारा अनुकूलन में एक जाना हो सकता है एक दृश्य है, तो आप पोस्ट कर सकते हैं देखें परिभाषा? ": DHCP इवेंट स्रोत"

3

लिए विशेष रूप से किसी भी त्रुटि के लिए अपने Windows सिस्टम ईवेंट लॉग की जांच करें। यह डीएचसीपी से संबंधित नेटवर्किंग त्रुटि की संभावना है। पता पट्टा समय समाप्त हो गया या तो। यह SQL सर्वर या क्वेरी से संबंधित कोई समस्या नहीं होनी चाहिए।

बस के लिए "सेमाफोर समय समाप्ति की अवधि समाप्त हो गया है" इंटरनेट खोज और आप सुझाव तुम्हारी समस्या क्या के लिए एक समाधान हो सकता है के बहुत सारे मिल जाएगा। दुर्भाग्य से इस समस्या के लिए समाधान प्रतीत नहीं होता है।

+0

मुझे पता है कि यह पांच साल पहले था, लेकिन आप यह क्यों मानेंगे कि यह एक निश्चित नेटवर्क पर एक डीएचसीपी मुद्दा है ...?यदि वह डेटाबेस सर्वर चला रहा है, तो उसके पास शायद एक निश्चित पता योजना है। मुझे लगता है कि यह एक गैर-जवाब है। –

0

आपके पास कितने रिकॉर्ड हैं? क्या टेबल पर कोई इंडेक्स हैं? इस प्रयास करें:

;with a as (
select distinct Status 
from MyTable 
where MemberType=6 
) 
select count(Status) 
from a 
संबंधित मुद्दे