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 det problem som uppstår när du ansluter till en SQL Server AlwaysOn-tillgänglighetsgrupplyssnare i en miljö med flera undernät.

Ursprunglig produktversion: SQL Server 2012 och senare versioner
Ursprungligt KB-nummer: 2792139

Symptom

När du har konfigurerat tillgänglighetsgruppens lyssnare för en AlwaysOn-tillgänglighetsgrupp i Microsoft SQL Server 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 av SQLCMD överskrids tidsgränsen för anslutningen. 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.

Kommentar

De här symptomen är tillfälliga eller relaterade till redundans för 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.

Kommentar

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 är konfigurerad 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 senare versioner av .NET Framework och är tillbaka portad till .NET Framework 3.5.

Kommentar

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 ärende:

  • För att lösa den här situationen när dataprovidrar stöder parametern MultiSubNetFailover lägger du till parametern i MultiSubNetFailover din anslutningssträng och anger 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 genom att köra följande kommando från Windows PowerShell kommandoradsgränssnittet:

    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.

Kommentar

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 redundans inträffar. Detta kan orsaka en fördröjning av anslutning för nästa omkoppling.

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 tilldelas 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 den här egenskapen till 1 och alla lyssnarens IP-adresser registreras på 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 en lång inloggningstid eller tidsgränser för inloggning.

Kommentar

Problemet 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 den av följande åtgärder som gäller för din version av SharePoint:

Referenser