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.
gäller för:SQL Server
Om du vill konfigurera en AlwaysOn-tillgänglighetsgrupp som stöder skrivskyddad routning i SQL Server kan du använda antingen Transact-SQL eller PowerShell. Skrivskyddad routning refererar till möjligheten för SQL Server att dirigera kvalificerade skrivskyddade anslutningsbegäranden till en tillgänglig AlwaysOn-läsbar sekundär replik (d.s. en replik som är konfigurerad för att tillåta skrivskyddade arbetsbelastningar när den körs under den sekundära rollen). För att stödja skrivskyddad routning måste tillgänglighetsgruppen ha en tillgänglighetsgrupplyssnare. Skrivskyddade klienter måste dirigera sina anslutningsbegäranden till den här lyssnaren och klientens anslutningssträngar måste ange programmets avsikt som "skrivskyddad". Det vill: de måste vara anslutningsbegäranden med läs avsikt.
Skrivskyddad routning är tillgänglig i SQL Server 2016 (13.x) och senare.
Anmärkning
Information om hur du konfigurerar en läsbar sekundär replik finns i Konfigurera Read-Only Åtkomst på en tillgänglighetsreplik (SQL Server).
Förutsättningar
Tillgänglighetsgruppen måste ha en tillgänglighetsgruppslyssnare. Mer information finns i Skapa eller konfigurera en tillgänglighetsgrupplyssnare (SQL Server).
En eller flera tillgänglighetsrepliker måste konfigureras för att acceptera att vara läsbara i den sekundära rollen (dvs. för att vara läsbara sekundära repliker). Mer information finns i Konfigurera Read-Only Åtkomst på en tillgänglighetsreplik (SQL Server).
Du måste vara ansluten till den serverinstans som är värd för den aktuella primära repliken.
Om du använder en SQL-inloggning kontrollerar du att kontot är korrekt konfigurerat. Mer information finns i Hantering av inloggningar och jobb för databaser i en tillgänglighetsgrupp (SQL Server).
Vilka replikegenskaper behöver du konfigurera för att stödja Read-Only routning?
För varje läsbar sekundär replik som stöder skrivskyddad routning måste du ange en skrivskyddad routnings-URL. Den här URL gäller bara när den lokala repliken körs i en sekundär roll. Den skrivskyddade routnings-URL:en måste anges på replik-för-replik-basis efter behov. Varje lässkyddad routing-URL används för att dirigera läsintention anslutningsbegäranden till en specifik läsbar sekundär replik. Normalt tilldelas varje läsbar sekundär replik en skrivskyddad routnings-URL.
Information om hur du beräknar den skrivskyddade routnings-URL:en för en tillgänglighetsreplik finns i Beräkna read_only_routing_url för AlwaysOn
För varje tillgänglighetsreplika som du vill ska ha stöd för endast läsbar routning när den är den primära repliken, måste du ange en endast läsbar routningslista. En viss endast läsbar routningslista gäller bara när den lokala repliken körs i den primära rollen. Den här listan måste anges på replik-för-replik-basis efter behov. Vanligtvis skulle varje skrivskyddad routningslista innehålla alla skrivskyddade routnings-URL:er, med den lokala replikans URL sist i listan.
Anmärkning
Anslutningsförfrågningar med läsavsikt dirigeras till den första tillgängliga posten i den listan för endast läsbar routning för den aktuella primära replikan. Dock stöds belastningsutjämning för skrivskyddade repliker. För mer information, se Konfigurera belastningsutjämning för skrivskyddade repliker.
Anmärkning
Information om tillgänglighetsgrupplyssnare och mer information om skrivskyddad routning finns i Tillgänglighetsgrupplyssnare, Klientanslutning och Programredundans (SQL Server).
Behörigheter
Aktivitet | Behörigheter |
---|---|
Konfigurera repliker när du skapar en tillgänglighetsgrupp | Kräver medlemskap i sysadmin fast serverroll samt antingen CREATE AVAILABILITY GROUP-serverbehörighet, ALTER ANY AVAILABILITY GROUP-behörighet eller CONTROL SERVER-behörighet. |
Ändra en tillgänglighetsreplika | Kräver ändringstillstånd för tillgänglighetsgruppen, kontrolltillstånd för tillgänglighetsgrupp, tillstånd att ändra alla tillgänglighetsgrupper, eller kontrolltillstånd för servern. |
Använda Transact-SQL
Konfigurera en skrivskyddad routningslista
Använd följande steg för att konfigurera skrivskyddad routning med Transact-SQL. Ett kodexempel finns i Exempel (Transact-SQL), senare i det här avsnittet.
Anslut till den serverinstans som är värd för den primära repliken.
Använd kommandot SKAPA TILLGÄNGLIGHETSGRUPP Transact-SQL när du anger en replik för en ny tillgänglighetsgrupp. Om du lägger till eller ändrar en replik för en befintlig tillgänglighetsgrupp använder du kommandot ALTER AVAILABILITY GROUP Transact-SQL.
Om du vill konfigurera skrivskyddad routning för den sekundära rollen anger du alternativet SECONDARY_ROLE i satsen LÄGG TILL REPLIK eller ÄNDRA REPLIK MED:
SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:port')
Parametrarna för den skrivskyddade routnings-URL:en är följande:
systemadress
Är en sträng, till exempel ett systemnamn, ett fullständigt domännamn eller en IP-adress, som entydigt identifierar måldatorsystemet.hamn
Är ett portnummer som används av databasmotorn för SQL Server-instansen.Till exempel:
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')
I en MODIFY REPLICA-sats är ALLOW_CONNECTIONS valfritt om repliken redan har konfigurerats för att tillåta skrivskyddade anslutningar.
Mer information finns i Beräkna read_only_routing_url för AlwaysOn.
Om du vill konfigurera skrivskyddad routning för den primära rollen anger du alternativet PRIMARY_ROLE i satsen LÄGG TILL REPLIK eller ÄNDRA REPLIK MED:
PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ,... n ] ))
där identifierar servern en serverinstans som är värd för en skrivskyddad sekundär replik i tillgänglighetsgruppen.
Till exempel:
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))
Anmärkning
Du måste ange den skrivskyddade routnings-URL:en innan du konfigurerar den skrivskyddade routningslistan.
Konfigurera belastningsutjämning för endast läsbara repliker
Från och med SQL Server 2016 (13.x) kan du konfigurera belastningsutjämning för en uppsättning skrivskyddade repliker. Tidigare dirigerade skrivskyddad routning alltid trafik till den första tillgängliga repliken i routningslistan. Om du vill dra nytta av den här funktionen använder du en nivå med kapslade parenteser runt READ_ONLY_ROUTING_LIST serverinstanser i kommandona CREATE AVAILABILITY GROUP eller ALTER AVAILABILITY GROUP .
I följande routningslista balanseras till exempel skrivskyddad anslutningsbegäran över två skrivskyddade Server1
repliker och Server2
. De kapslade parenteserna som omger dessa servrar identifierar den belastningsbalanserade uppsättningen. Om ingen av replikerna är tillgängliga i den uppsättningen fortsätter den att försöka ansluta sekventiellt till de andra replikerna Server3
och Server4
, i den skrivskyddade routningslistan.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
Observera att varje post i routningslistan kan i sig vara en uppsättning belastningsutjämnade skrivskyddade repliker. I följande exempel visas detta.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')
Endast en nivå med kapslade parenteser stöds.
Exempel (Transact-SQL)
I följande exempel ändras två tillgänglighetsrepliker av en befintlig tillgänglighetsgrupp för AG1
att stödja skrivskyddad routning om en av dessa repliker för närvarande äger den primära rollen. För att identifiera de serverinstanser som är värdar för tillgänglighetsrepliken anger det här exemplet instansnamnen ochCOMPUTER01
COMPUTER02
.
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));
GO
Med hjälp av PowerShell
Konfigurera en skrivskyddad routningslista
Använd följande steg för att konfigurera skrivskyddad routning med hjälp av PowerShell. Ett kodexempel finns i Exempel (PowerShell), senare i det här avsnittet.
Ange standardvärdet (cd) till den serverinstans som är värd för den primära repliken.
När du lägger till en tillgänglighetsreplik i en tillgänglighetsgrupp använder du cmdleten New-SqlAvailabilityReplica . När du ändrar en befintlig tillgänglighetsreplik använder du cmdleten Set-SqlAvailabilityReplica . De relevanta parametrarna är följande:
Om du vill konfigurera skrivskyddad routning för den sekundära rollen anger du parametern ReadonlyRoutingConnectionUrl"url" .
där url är det fullständigt kvalificerade domännamnet (FQDN) och porten som ska användas vid routning till repliken för skrivskyddade anslutningar. Till exempel:
-ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"
Mer information finns i Beräkna read_only_routing_url för AlwaysOn.
Om du vill konfigurera anslutningsåtkomst för den primära rollen anger du ReadonlyRoutingList"server" [ ,... n ], där servern identifierar en serverinstans som är värd för en skrivskyddad sekundär replik i tillgänglighetsgruppen. Till exempel:
-ReadOnlyRoutingList "SecondaryServer","PrimaryServer"
Anmärkning
Du måste ange skrivskyddad routnings-URL för en replik innan du konfigurerar dess skrivskyddade routningslista.
Anmärkning
Om du vill visa syntaxen för en cmdlet använder du cmdleten Get-Help i SQL Server PowerShell-miljön. Mer information finns i Hämta hjälp för SQL Server PowerShell.
Konfigurera och använda SQL Server PowerShell-providern
Exempel (PowerShell)
I följande exempel konfigureras den primära repliken och en sekundär replik i en tillgänglighetsgrupp för skrivskyddad routning. Först tilldelar exemplet en skrivskyddad routnings-URL till varje replik. Sedan ställer den in den skrivskyddade routningslistan på den primära repliken. Anslutningar med egenskapen "ReadOnly" som anges i anslutningssträngen omdirigeras till den sekundära repliken. Om den här sekundära repliken inte kan läsas (enligt inställningen ConnectionModeInSecondaryRole ) dirigeras anslutningen tillbaka till den primära repliken.
Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica
Uppföljning: När du har konfigurerat Read-Only routning
När den aktuella primära repliken och de läsbara sekundära replikerna har konfigurerats för att stödja skrivskyddad routning i båda rollerna kan de läsbara sekundära replikerna ta emot skrivskyddade anslutningsbegäranden från klienter som ansluter via tillgänglighetsgruppens lyssnare.
Tips/Råd
När du använder bcp-verktyget eller sqlcmd-verktyget kan du ange skrivskyddad åtkomst till alla sekundära repliker som är aktiverade för skrivskyddad åtkomst genom att ange växeln -K ReadOnly .
Krav och rekommendationer för klient Connection-Strings
För att ett klientprogram ska kunna använda skrivskyddad routning måste anslutningssträngen uppfylla följande krav:
Använd TCP-protokollet.
Ange attributet/egenskapen för program avsikt till readonly.
Referera till lyssnaren i en hög tillgänglighetsgrupp som är konfigurerad för att stödja routning för skrivskyddad åtkomst.
Referera till en databas i tillgänglighetsgruppen.
Dessutom rekommenderar vi att anslutningssträngar aktiverar redundans för flera undernät, vilket stöder en parallell klienttråd för varje replik i varje undernät. Detta minimerar klientens återanslutningstid efter en redundansväxling.
Syntaxen för en anslutningssträng beror på vilken SQL Server-provider ett program använder. Följande exempel på anslutningssträng för .NET Framework Data Provider 4.0.2 för SQL Server illustrerar de delar av en anslutningssträng som krävs och rekommenderas att fungera för skrivskyddad routning.
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
Mer information om skrivskyddad programavsikt och skrivskyddad routning finns i Tillgänglighetsgrupplyssnare, Klientanslutning och programfelsäkerhet (SQL Server).
Om Read-Only routning inte fungerar korrekt
Information om hur du felsöker en skrivskyddad routningskonfiguration finns i Read-Only Routing fungerar inte som det ska.
Återgå till standardbeteende för routning
Från och med förhandsversionen av SQL Server 2025 (17.x) kan du specificera NONE
som antingen READ_WRITE_ROUTING_URL
eller READ_ONLY_ROUTING_URL
destination för att återställa specificerad routning för tillgänglighetsrepliken och routa trafiken baserat på standardbeteendet. För att lära dig mer, granska ALTER AVAILABILITY GROUP kommandot Transact-SQL.
Nästa steg
Visa skrivskyddade routningskonfigurationer
sys.tillgänglighet_skrivskyddade_dirigeringslistor (Transact-SQL)
sys.availability_replicas (Transact-SQL) (read_only_routing_url kolumn)
Så här konfigurerar du åtkomst till klientanslutning
Skapa eller konfigurera en tillgänglighetsgrupplyssnare (SQL Server)
Konfigurera Read-Only åtkomstinställningar på en tillgänglighetsreplika (SQL Server)
Så här använder du anslutningssträngar i program
SQL Server Native Client-stöd för hög tillgänglighet, katastrofåterställning
Använda nyckelord för anslutningssträngar med den interna SQL Server-klienten
Bloggar:
Vitböcker:
Ytterligare innehåll