2012-01-16 20 views
7

मैंने सोचा था कि मेरे पास एक एसक्यूएल त्रुटि थी जो here पोस्ट में थोड़ी देर पहले पाई गई थी ... (त्रुटि संदेश: टाइमआउट समाप्त हो गया। टाइमआउट अवधि पहले समाप्त हो गई ऑपरेशन को पूरा करने के लिए या सर्वर प्रतिक्रिया नहीं दे रहा है। ") मैं दृश्य स्टूडियो में डेटाबेस टूल्स के साथ इसे चलाने की कोशिश कर रहा हूं ... प्रबंधन स्टूडियो नहीं, और क्लाइंट कोड/एडीओ (अभी तक) के माध्यम से नहीं। मैं काफी हद तक पुनः लिखता हूं सरल क्वेरी जो कुछ कस्टम फ़ंक्शंस का उपयोग करती है ... फ़ंक्शंस के साथ-साथ क्वेरी के हिस्सों का परीक्षण किया गया है और सभी अच्छी तरह से चल रहे हैं, लेकिन नीचे दी गई क्वेरी .. यह प्रबंधन स्टूडियो में टाइप की गई बिल्कुल ठीक है, और लगभग 4 मिनट लगते हैं। जैसा कि मैंने अपनी दूसरी पोस्ट में उल्लेख किया है, मैंने इस पोस्टिंग के अनुसार टूल> विकल्प> डिज़ाइनर> "कनेक्शन स्ट्रिंग टाइम-आउट मान ओवरराइड करें" को 120 सेकंड में बदल दिया है, लेकिन ... यह अभी भी बाद में समाप्त हो गया है 30 सेकंड जोड़ें इस नवीनतम संस्करण में ISNULL को बदलना वह परिवर्तन है जो इसे प्रबंधन स्टूडियो में चल रहा है।एसक्यूएल सर्वर को अभी भी "टाइमआउट की समयसीमा समाप्त हो गई है।" टाइमआउट अवधि समाप्त हो गई है "

SELECT Symbol, LatestDate 
FROM (SELECT Symbol, ISNULL(dbo.LatestDateInDailyPricingVolBySymbol(Symbol), '1/1/1900') AS LatestDate FROM tblSymbolsMain) AS T2 
WHERE (LatestDate < dbo.RecentTradingDateByNumber(3)) 

सामान्य विचार है कि कम से कम 3 दिनों के लिए अपने दैनिक मूल्य निर्धारण तालिका में एक से संबंधित डेटा बिंदु नहीं है स्टॉक प्रतीक के एक सबसेट वापस पाने के लिए है। कोई लेने वाला? सबको शुक्रीया।

उत्तर

10

आपके टाइमआउट के संबंध में;

क्या आप अपनी क्वेरी चलाने के लिए एसक्यूएल प्रबंधन कंसोल का उपयोग कर रहे हैं? यदि ऐसा है, तो डेटाबेस से कनेक्ट करते समय एक विकल्प बटन होता है जो एक को टाइमआउट सेट करने की अनुमति देता है।

Connection Options

इसके अलावा, अगर क्वेरी विंडो में, राइट क्लिक करें और क्वेरी विकल्प चुनें ....

0, असीमित मतलब है, मैं इन की जाँच करेगा। 4 मिनट लंबा समय है, शायद क्वेरी को तेजी से चलाने के लिए दोबारा इस्तेमाल किया जा सकता है?

enter image description here

आप सी # के माध्यम से दृश्य स्टूडियो के इस के अंदर चल रहे हैं, तो डिफ़ॉल्ट आदेश टाइमआउट 30 सेकंड है। कमांड टाइम को सेट करके इसे बदलें:

SqlCommand comm= new SqlCommand(); 
comm.CommandTimeout = 300; 
+0

जैसा कि मैंने mentinoed यह प्रबंधन स्टूडियो में चलता है लेकिन कुछ समय लगता है ... मैं इसे विजुअल स्टूडियो 2010 में एसक्यूएल टूल्स के साथ चलाने की कोशिश कर रहा हूं। – StatsViaCsh

+0

@StatsViaCsh - SQL सर्वर प्रबंधन कंसोल के समान है जो VS2010 के अंदर एक सेटिंग होना चाहिए। यदि कोड उत्पन्न हुआ था, तो इसे कोड के माध्यम से जोड़ा जा सकता है, लेकिन हो सकता है कि क्वेरी स्क्रीन पर सही क्लिक करें या विकल्प कहीं? क्षमा करें, मैं क्वेरी चलाने के लिए VS2010 का उपयोग नहीं करता, केवल SQL सर्वर प्रबंधन कंसोल, इसलिए मैं उन स्क्रीन से अपरिचित हूं। –

+0

@StatsViaCsh - VS2010 के आसपास थोड़ा सा देखा, मैं कनेक्शन टाइमआउट सेट कर सकता हूं, लेकिन कमांड टाइमआउट नहीं ढूंढ सकता। मैं उपकरण का उपयोग करने के बजाय कोड के साथ प्रयास करता हूं, ऐसा लगता है कि यह एक डिफ़ॉल्ट का उपयोग कर रहा है जिसे आसानी से बदला नहीं जा सकता है। –

1

यह मुझे चिंतित करता है कि आपकी दिनचर्या में 4 मिनट लगते हैं। यह एक बहुत ही सरल सवाल की तरह लगता है कि कार्यों को वह करने के लिए लगता है जो वे करते हैं, और अनुक्रमण और उपयुक्त टेबल डिज़ाइन के साथ, इसे उससे अधिक तेज़ी से वापस करना चाहिए।

SELECT Symbol, MAX(TradeDate) 
FROM tblSymbolsMain 
GROUP BY Symbol 
HAVING MAX(TradeDate) < dbo.RecentTradingDateByNumber(3) 

अदिश कार्यों प्रदर्शन की समस्याओं हो सकता है जब पंक्तियों की एक बड़ी संख्या है, और भी चोट sargability साथ सेट पर बार-बार कहा जाता है:

आप इस क्वेरी के लिये कार्य योजना पर ध्यान दिया है।

+0

प्रतिक्रिया के लिए धन्यवाद बारे में अधिक जानकारी जानना चाहते हैं। यह वास्तव में बहुत लंबा लगता है! मैंने अपनी निष्पादन योजना नहीं देखी है ... मुझे यकीन नहीं है कि कैसे। मुझे यह एक संग्रहीत प्रक्रिया बनाने का विचार था जो फ़ंक्शन का मान सेट कर सकता है: dbo.RecentTradingDateByNumber (3) बस एक बार, लेकिन मुझे नहीं पता कि सूक्ष्म परिवर्तन यह लाइन में गिर जाएगा। यदि आपके पास आगे की कमी है, तो मैं सभी कान हूं। प्रबंधन स्टूडियो में – StatsViaCsh

+0

@StatsViaCsh, निष्पादन योजना देखने के लिए एक मेनू विकल्प है। एक मुफ्त ईबुक है जो आपको बताएगी कि खराब निष्पादन योजना कैसा दिखता है: http://www.simple-talk.com/books/sql-books/sql-server-execution-plans/ –

2

यदि कोई प्रश्न लंबे समय तक लेता है तो शायद यह कुछ गलत है। मैं हालिया ट्राइडिंगडेट ByNumber स्टोर करने के लिए एक चर घोषित करता हूं। तो यह इस तरह दिखता है:

DECLARE @RecentTrandingDateByNumber DATETIME 
SET @RecentTrandingDateByNumber=dbo.RecentTradingDateByNumber(3) 

SELECT 
    tblSymbolsMain.Symbol, 
    MAX(tblSymbolsMain.TradeDate) 
FROM 
    tblSymbolsMain 
GROUP BY 
    Symbol 
HAVING 
    MAX(TradeDate) < @RecentTrandingDateByNumber 

देखने के लिए प्रबंधन स्टूडियो में निष्पादन "प्रश्न/वास्तविक निष्पादन योजना शामिल करें" के लिए जाना। यदि आप क्वेरी के ट्रैफ़िक को चुनने की संख्या आदि देखना चाहते हैं तो आप क्लाइंट आंकड़े भी शामिल कर सकते हैं।

"प्रश्न/ग्राहक आंकड़े शामिल करें" आप की जांच के प्रश्नों निष्पादन को देखने here

+1

इसके लिए धन्यवाद, यह पहली बात है जो मैं आज करने जा रहा हूं .. – StatsViaCsh

संबंधित मुद्दे