Dela via


Tidsgränsen uppnås när du ansluter till en AlwaysOn-lyssnare i en miljö med flera undernät

Den här artikeln hjälper dig att lösa problemet som uppstår när du ansluter till en SQL Server AlwaysOn-tillgänglighetsgruppslyssnare i en miljö med flera undernät.

Ursprunglig produktversion: SQL Server 2012 Developer, SQL Server 2012 Enterprise, SQL Server 2012 Express, SQL Server 2012 Standard, SQL Server 2012 Web, SQL Server 2012 Enterprise Core
Ursprungligt KB-nummer: 2792139

Symptom

När du har konfigurerat tillgänglighetsgruppens lyssnare för en AlwaysOn-tillgänglighetsgrupp i Microsoft SQL Server 2012 kanske du inte kan pinga lyssnaren eller ansluta till den från ett program.

När du till exempel försöker ansluta till en lyssnare av SQL Server med hjälp SQLCMDav överskrider anslutningen tidsgränsen. Dessutom får du ett felmeddelande som liknar följande:

Sqlcmd: Fel: Microsoft SQL Native Client: Tidsgränsen för inloggning har upphört att gälla.

Obs!

Dessa symtom är vanligtvis tillfälliga eller relaterade till redundansväxling av tillgänglighetsgruppresursen.

Följande skärmbild visar ett exempel på vad som händer när du försöker pinga lyssnaren för tillgängligheten för aglisten. Skärmbilden visar också en lyckad anslutning till SQL Server med hjälp SQLCMD av kommandot när du inkluderar redundansparametern -Mför flera undernät .

Skärmbild av kommandotolken när du pingar lyssnaren för tillgängligheten av aglisten.

Obs!

Du kan använda SQLCMD kommandot tillsammans med parametern -M enligt skärmbilden för att ansluta till lyssnaren.

Orsak

Det här problemet beror på att ditt program antingen använder en äldre dataprovider som inte stöder den nya MultiSubnetFailover parametern eller inte har konfigurerats för att använda den här parametern.

Den här parametern stöds i nyare versioner av SQLClient-drivrutinen som ingår i .NET Framework 4 och med senare versioner av .NET Framework och är tillbaka portad till .NET Framework 3.5.

Obs!

Kommandot PING är ett enkelt verktyg för anslutningstestning som inte stöder den nya parametern.

Åtgärd

Du kan använda någon av följande lösningar som gäller för ditt fall:

  • Lös den här situationen när dataprovidrar stöder parametern MultiSubNetFailover genom att lägga till parametern i MultiSubNetFailover din anslutningssträng och ange den till true.

  • För att lösa den här situationen när dina äldre klienter inte kan använda MultiSubnetFailover egenskapen kan du ändra lyssnarens RegisterAllProvidersIP värde till 0. Det gör du genom att köra följande kommando från kommandoradsgränssnittet Windows PowerShell:

    Import-Module FailoverClusters
    Get-ClusterResource <*Your listener name*>|Set-ClusterParameter RegisterAllProvidersIP 0
    

    Skärmbild som visar utdata från ett exempel på kommandot i Windows PowerShell.

Obs!

När du har angett RegisterAllProvidersIP värdet till 0 måste den aktuella online-IP-adressen avregistreras från DNS-servern och offline-IP-adressen måste registreras på DNS-servern när en redundansväxling sker. Detta kan orsaka en anslutningsfördröjning för nästa redundansväxling.

Mer information

När du försöker ansluta till en lyssnare som har definierats i mer än ett undernät kan åtgärden misslyckas om klientdrivrutinen försöker ansluta med hjälp av en av lyssnarens offline-IP-adresser.

När en lyssnare skapas utses en IP-adress för varje unikt undernät som en tillgänglighetsgruppreplik finns i. Om till exempel en lyssnare skapas för en tillgänglighetsgrupp som har repliker som finns i två undernät definieras två IP-adresser i lyssnaren. En adress används av ett program som kan ansluta till en instans av SQL Server i undernät 1 och den andra adressen används när ett program ansluter till en instans av SQL Server i undernät 2.

I bakgrunden skapar lyssnaren en Resurs för Klientåtkomstpunkt för Windows-kluster. En av dess egenskaper är RegisterAllProvidersIP. När en lyssnare skapas anges detta till 1 och alla lyssnarens IP-adresser registreras i DNS-servern. Den här konfigurationen ger kortare återanslutningstid för klienter.

Eftersom DNS-posten innehåller alla IP-adresser måste en klient som försöker ansluta till lyssnaren veta hur den här situationen ska hanteras. Parametern MultiSubnetFailover gör det möjligt för klientdrivrutinen att prova anslutningar parallellt med alla lyssnarens IP-adresser. Utan parametern MultiSubnetFailover försöker klientdrivrutinen ansluta sekventiellt till alla IP-adresser för lyssnaren. Sekventiella anslutningar kan orsaka långa tidsgränser för inloggning eller inloggning.

Obs!

Det problem som nämns i den här artikeln påverkar även SharePoint-miljöer som är konfigurerade att använda en AlwaysOn-tillgänglighetsgrupps sekundära skrivskyddade replik. Lös problemet genom att utföra något av följande åtgärder som gäller för din version av SharePoint:

Referenser