Symptom
När du försöker ansluta till en databas med hjälp av SqlConnection -objektet i Microsoft ADO.NET 2.0 rapporteras ett anslutningsfel trots att databasservern är tillgängligt. Problemet märks mest när följande villkor är uppfyllda:
-
Databasservern har varit tillgänglig under minst en minut.
-
Klientprogrammet har försökt ansluta till databasservern under den tiden.
Orsak
Det här problemet beror på vad som händer när tidigare anslutningsförsök till servern som kör Microsoft SQL Server misslyckas. Anslutningspool SqlClient kan internt begränsar antalet nya anslutningsförsök till servern. Denna process är avsedd för en kort stund. Under denna tid rapporterar anslutningspoolen automatiskt det senaste felet som inträffade i stället för att en anslutning försöker till servern. Efter tidsperioden har löpt ut, uppnår nästa begäran från klientprogrammet en true anslutning till servern som kör SQL Server. Obs! Hur lång tid kan ibland växa mycket stor. Det här problemet beror på hur länge databasservern är inte tillgänglig.
Lösning
Lös problemet genom att hämta filen för din dator:
För en dator med x86
Följande fil kan hämtas från Microsoft Download Center:http://download.microsoft.com/Download/2/C/5/2C5BCDC9-3241-443A-9F96-4E0B0EDFA727/NDP20-KB916002-X86.exe
För en dator med x64
Följande fil kan hämtas från Microsoft Download Center:http://download.microsoft.com/Download/D/3/9/D39C79DF-4158-45DF-9031-92C52AB0ED19/NDP20-KB916002-X64.exe
För en Itanium-baserad dator
Följande fil kan hämtas från Microsoft Download Center: http://download.microsoft.com/download/0/0/3/00392DD3-5B4F-4D99-94E8-6827B8F8D7EF/NDP20-KB916002-IA64.exe För mer information om hur du hämtar supportfiler från Microsoft klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
119591 hämta Microsoft-supportfiler från onlinetjänsterMicrosoft har genomsökt denna fil efter virus. Microsoft använde det mest aktuella antivirusprogram som var tillgängligt när filen lades upp. Filen är sparad på servrar med utökad säkerhet som hjälper till att förhindra otillåtna ändringar av den.
Lösning
Undvik problemet genom att använda metoderna ClearPool eller ClearAllPools för SqlConnection -objektet för att återställa anslutningspoolen.
Status
Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet ”gäller”.
Mer information
När du har installerat den här snabbkorrigeringen kan fortfarande en liten fördröjning uppstå innan klientprogrammet kan ansluta till databasservern databasservern återfår från ett strömavbrott. Vanligtvis pågå den här fördröjningen inte mer än 60 sekunder, oavsett hur länge SQL Server har tidigare varit tillgänglig. Mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
824684 beskrivning av standardterminologin som används för att beskriva Microsoft-programuppdateringarMer information om klassen SqlConnection finns på följande Microsoft Developer Network (MSDN)-webbplats:
http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(VS.80).aspxDen här snabbkorrigeringen ingår i samma snabbkorrigeringspaket som snabbkorrigeringen i följande artikel i Microsoft Knowledge Base:
912151 KORRIGERA: anslutningen får timeout innan första försöket att ansluta till servern för failover-partner när du försöker ansluta till en speglad databas i SQL Server 2005 med hjälp av ADO.NET 2.0-program
912731 KORRIGERA: när en ADO.NET-anslutna program använder System.Data.SqlClient namespace, programmet uppstår hög CPU-användning och slutar svara
912732 KORRIGERA: ett fel som kan uppstå när du startar en ny transaktion i ADO.NET 2.0 på en anslutning som är öppen till en SQL Server 2005-databas
913177 KORRIGERA: du får ett felmeddelande när ett ADO.NET-anslutna program använder klassen SqlBulkCopy
913764 KORRIGERA: felmeddelande när du försöker köra en UNION ALL fråga eller anropa metoden DeriveParameters: ”allvarligt internt anslutningsfel”
913765 KORRIGERA: ett SqlException-undantag kan inträffa om du anropar en av Execute-metoderna i en instans av klassen SqlCommand i ett ADO.NET 2.0-program
913766 KORRIGERA: en DateTime-kolumn som inte innehåller några data är felaktigt representeras av ett DateTime.MinValue fält när ett.NET Framework 2.0 DataSet-objekt deserialisera på en klientdator