Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 .
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
MultiSubNetFailoverlägger du till parametern iMultiSubNetFailoverdin 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
MultiSubnetFailoveregenskapen kan du ändra lyssnarensRegisterAllProvidersIPvä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
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:
För SharePoint 2007: Detta klassificeras som ett äldre program. Därför kan SharePoint 2007 inte konfigureras för att använda parametern
MultiSubnetFailover. I stället måste du använda Windows PowerShell-kommandot som beskrivs i avsnittet Lösning .För SharePoint 2010: Kumulativa uppdateringspaket är nu tillgängliga som lägger till stöd för parametern
MultiSubnetFailover. Mer information om uppdateringspaketen finns i följande artikel: