2014-06-13 5 views
7

मैं किसी SQL Azure डेटाबेस के साथ एक नेट MVC Azure वेब साइट चला रहा हूँ (एक हजार या तो अनुरोधों में 1) इकाई की रूपरेखा 6. रहकर का उपयोग करके पहुँचा, मैं त्रुटि मिलती है " System.ComponentModel.Win32Exception: सेमाफोर समय समाप्ति की अवधि समाप्त हो गया है ""सेमाफोर समय समाप्ति की अवधि समाप्त हो गया है" एसक्यूएल Azure

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.) ---> System.ComponentModel.Win32Exception: The semaphore timeout period has expired

इसमें और इससे पहले कि और त्रुटि और SQL Azure के साथ उनकी बातचीत के बाद ठीक हैं अनुरोधों के लिए कोई कारण नहीं हो रहा है। क्या इसे संभालने या हल करने का कोई तरीका है।

उत्तर

10

Azure SQL आधार एसक्यूएल से बहुत अलग है। जब एक Azure SQL सर्वर ओवरलोड हो जाता है या नीचे चला जाता है, तो यह कई कनेक्शन डिस्कनेक्ट करेगा और जब आप दोबारा कनेक्ट करेंगे तो आपको किसी अन्य SQL सर्वर पर भेजा जाएगा।

हालांकि टीसीपी कनेक्शन के साथ आप नहीं जानते कि दूसरे छोर ने कनेक्शन को तब तक समाप्त कर दिया है जब तक आप वास्तव में जानकारी नीचे नहीं भेजते, यही कारण है कि यह त्रुटि होती है।

एक बार आपके कोड को पता है कि कनेक्शन समाप्त हो गया है, तो यह अगली क्वेरी पर एक नया कनेक्शन स्थापित करता है, जो ठीक काम करेगा।

इकाई की रूपरेखा 6 के साथ अब आप Transient Fault Handling with SQL Azure using Entity Framework

के साथ सौदा कर सकते हैं अपने DBConfiguration वर्ग आप अपने SetExecutionStrategy की स्थापना की और इसे कॉन्फ़िगर करना है। बस अपनी परियोजना में एक नई कक्षा बनाएं और डीबी कॉन्फ़िगरेशन से प्राप्त करें। Connection Resiliency/Retry Logic (EF6 onwards)

4

वहाँ एक पता है कि इस मुद्दे को जहां इस एक वीआईपी स्वैप के दौरान होता है, और EF6 पुन: प्रयास करें रणनीति इस परिदृश्य में मदद नहीं करता है पर

public class MyConfiguration : DbConfiguration 
{ 
    public MyConfiguration() 
    { 
     SetExecutionStrategy( 
      "System.Data.SqlClient", 
      () => new SqlAzureExecutionStrategy(1, TimeSpan.FromSeconds(30))); 
    } 
} 

पूर्ण विवरण।

https://social.msdn.microsoft.com/Forums/azure/en-US/5e195f94-d4d2-4c2d-8a4e-7d66b4761510/vip-swap-and-the-semaphore-timeout-period-has-expired-errors?forum=ssdsgetstarted&prof=required

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