में ठीक काम करता है मैं SQL Server 2008R2 का उपयोग कर ADO.NET से एक क्वेरी चलाने की कोशिश कर रहा हूं। मैं पेजिंग प्रदान करने और @Offset
और @Limit
के लिए पैरामीटर जोड़ने के लिए एक सीटीई का उपयोग कर रहा हूं, जो दोनों पूर्णांक हैं।ADO.NET टाइमआउट लेकिन एसएसएमएस
मैं उपयोगकर्ता इनपुट के आधार पर एक पैरामीटरयुक्त क्वेरी का निर्माण कर रहा हूं।
;WITH Results_CTE AS (
SELECT ld.* , ROW_NUMBER() OVER (ORDER BY Key_Field) AS RowNum
FROM list..List_Data ld
WHERE VALUE_2010 IS NOT NULL
AND Postcode LIKE @Postcode + '%'
) SELECT * FROM Results_CTE
WHERE RowNum > @Offset AND RowNum < @Offset + @Limit
OPTION (RECOMPILE)
खंड की तरह मैं कुछ का उपयोग कर रहा जिसके कारण मैं OPTION RECOMPILE
है: अंतिम आउटपुट यह है। अगर मैं SSMS के माध्यम से मानकों की घोषणा और इतने की तरह चलाएँ:
declare @postcode varchar(10) = 'SW1 1AA';
declare @Offset int = 0;
declare @Limit int = 10;
मैं एक बहुत ही त्वरित प्रतिक्रिया समय (1s से भी कम) मिलता है। अगर मैं इसे ADO.NET के साथ आज़माता हूं, हालांकि, यह हमेशा के लिए लेता है। मैं इन दोनों के साथ पैरामीटर जोड़कर की कोशिश की है:
cmd.Parameters.AddWithValue("@Offset", startRowIndex) // times out
cmd.Parameters.AddWithValue("@Limit", limit)
cmd.Parameters.Add(New SqlParameter("@Offset", SqlDbType.BigInt)) // also times out
cmd.Parameters.Item("@Offset").Value = startRowIndex
cmd.Parameters.Add(New SqlParameter("@Limit", SqlDbType.BigInt))
cmd.Parameters.Item("@Limit").Value = limit
अगर वहाँ केवल हालांकि पहले क्वेरी द्वारा रिटर्न कुछ ऐसी पंक्तियां हैं और मैं @Offset
और @Limit
छानने ड्रॉप, मैं एक सभ्य प्रतिक्रिया समय मिलता है। क्या कोई तरीका है कि मैं और पेजिंग का उपयोग कर सकता हूं?
संपादित करें: मैं @postcode
पैरामीटर में गुजर रहा हूँ (जो .NET में एक स्ट्रिंग इस के माध्यम से है:
cmd.Parameters.AddWithValue("@Postcode", normalizedPostcode)
@close मतदाता। यह एक डुप्ली नहीं है। पिछला सवाल वैरिएबल के साथ अलग-अलग व्यवहार को समझाने के बारे में था पैरामीटर नहीं। दोनों को SQL सर्वर द्वारा अलग तरीके से इलाज किया जाता है। –
क्या आप वह कोड दिखा सकते हैं जहां आप '@ पोस्टकोड' पैरामीटर में पास करते हैं? –
क्या यह निश्चित रूप से एसक्यूएल टाइम आउट है? इस बात की कोई संभावना नहीं है कि कनेक्शन प्राप्त करने का प्रयास करने का समय (उदाहरण के लिए, जब आप ऐसा करते हैं तो आपके पास कनेक्शन के लोड अभी भी खुले हैं) या ऐसा कुछ और? – Chris