

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Konfigurieren Sie schreibgeschütztes Routing in AlwaysOn-Verfügbarkeitsgruppen in SQL Server auf AWS
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws"></a>

*Subhani Shaik, Amazon Web Services*

## Zusammenfassung
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-summary"></a>

Dieses Muster beschreibt, wie das sekundäre Standby-Replikat in SQL Server Always On verwendet wird, indem die schreibgeschützten Workloads vom primären Replikat auf das sekundäre Replikat verlagert werden.

Die Datenbankspiegelung verfügt über eine Zuordnung. one-to-one Sie können die sekundäre Datenbank nicht direkt lesen, daher müssen Sie Snapshots erstellen. Die Always-On-Verfügbarkeitsgruppenfunktion wurde in Microsoft SQL Server 2012 eingeführt. In späteren Versionen wurden wichtige Funktionen eingeführt, darunter schreibgeschütztes Routing. In Always-On-Verfügbarkeitsgruppen können Sie die Daten direkt aus dem sekundären Replikat lesen, indem Sie den Replikatmodus auf Schreibgeschützt ändern.

Die Always-On-Lösung für Verfügbarkeitsgruppen unterstützt Hochverfügbarkeit (HA), Notfallwiederherstellung (DR) und ist eine Alternative zur Datenbankspiegelung. Always-On-Verfügbarkeitsgruppen arbeiten auf Datenbankebene und maximieren die Verfügbarkeit einer Reihe von Benutzerdatenbanken.

SQL Server verwendet den Nur-Lese-Routing-Mechanismus, um die eingehenden schreibgeschützten Verbindungen an das sekundäre Lesereplikat umzuleiten. Um dies zu erreichen, sollten Sie der Verbindungszeichenfolge die folgenden Parameter und Werte hinzufügen:
+ `ApplicationIntent=ReadOnly`
+ `Initial Catalog=<database name>`

## Voraussetzungen und Einschränkungen
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-prereqs"></a>

**Voraussetzungen**
+ Eine aktive AWS-Konto mit einer Virtual Private Cloud (VPC), zwei Availability Zones, privaten Subnetzen und einer Sicherheitsgruppe
+ Zwei Amazon Elastic Compute Cloud (Amazon EC2) -Maschinen mit [SQL Server 2019 Enterprise Edition Amazon Machine Image](https://aws.amazon.com/marketplace/pp/prodview-btjcozd246p6w) mit [Windows Server Failover Clustering (WSFC)](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/ec2-fci.html), die auf Instanzebene konfiguriert sind, und einer Always-On-Verfügbarkeitsgruppe, die auf SQL Server-Ebene zwischen dem primären Knoten (`WSFCNODE1`) und dem sekundären Knoten (`WSFCNODE2`) konfiguriert ist, die Teil des Verzeichnisses mit dem Namen sind AWS Directory Service for Microsoft Active Directory `tagechtalk.com`
+ Ein oder mehrere Knoten, die für die Annahme `read-only` im sekundären Replikat konfiguriert sind
+ Ein Listener, der nach der `SQLAG1` Always-On-Verfügbarkeitsgruppe benannt ist
+ SQL Server Database Engine wird mit demselben Dienstkonto auf zwei Knoten ausgeführt
+ SQL Server Management Studio (SSMS)
+ Eine Testdatenbank mit dem Namen `test`

**Produktversionen**
+ SQL Server 2014 und höher

## Architektur
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EC2
+ AWS Managed Microsoft AD
+ Amazon FSx

**Zielarchitektur**

Das folgende Diagramm zeigt, wie der Always On Availability Group (AG) -Listener Abfragen, die den `ApplicationIntent` Parameter in der Verbindung enthalten, an den entsprechenden sekundären Knoten umleitet.

![Dreistufiger Prozess zwischen zwei Availability Zones für Knoten 1 WSFC und Knoten 2 WSFC mit Amazon EFS.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/19b5937b-da10-4c74-8619-fdcb758f2211/images/f9ba0f89-7dc2-4f4c-8eee-bef56968ad2d.png)


1. Eine Anfrage wird an den Always-On-Verfügbarkeitsgruppen-Listener gesendet.

1. Wenn die Verbindungszeichenfolge den `ApplicationIntent` Parameter nicht enthält, wird die Anfrage an die primäre Instanz gesendet.

1. Wenn die Verbindungszeichenfolge Folgendes enthält`ApplicationIntent=ReadOnly`, wird die Anforderung an die sekundäre Instanz mit schreibgeschützter Routing-Konfiguration gesendet, bei der es sich um WSFC mit einer Always-On-Verfügbarkeitsgruppe handelt.

## Tools
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-tools"></a>

**AWS-Services**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)ermöglicht Ihren verzeichnissensitiven Workloads und AWS Ressourcen die Verwendung von Microsoft Active Directory in der. AWS Cloud
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet sichere und skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) bietet Dateisysteme, die branchenübliche Konnektivitätsprotokolle unterstützen und eine hohe Verfügbarkeit und Replikation in allen Bereichen AWS-Regionen bieten.

**Andere Dienste**
+ SQL Server Management Studio (SSMS) ist ein Tool zum Verbinden, Verwalten und Verwalten der SQL Server-Instanzen.
+ sqlcmd ist ein Befehlszeilenprogramm.

## Best Practices
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-best-practices"></a>

[Weitere Informationen zu AlwaysOn-Verfügbarkeitsgruppen finden Sie in der SQL Server-Dokumentation.](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-ver16)

## Epen
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-epics"></a>

### Richten Sie schreibgeschütztes Routing ein
<a name="set-up-read-only-routing"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die Replikate so, dass sie schreibgeschützt sind. | [Um sowohl das primäre als auch das sekundäre Replikat auf schreibgeschützt zu aktualisieren, stellen Sie von SSMS aus eine Verbindung zum primären Replikat her und führen Sie den *Schritt* 1-Code aus dem Abschnitt Zusätzliche Informationen aus.](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) | DBA | 
| Erstellen Sie die Routing-URL. | Um die Routing-URL für beide Replikate zu erstellen, führen Sie den *Schritt 2-Code* aus dem Abschnitt [Zusätzliche Informationen](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) aus. In diesem Code `tagechtalk.com` steht der Name des AWS Managed Microsoft AD Verzeichnisses. | DBA | 
| Erstellen Sie die Routing-Liste. | Um die Routingliste für beide Replikate zu erstellen, führen Sie den *Schritt 3-Code* aus dem Abschnitt [Zusätzliche Informationen](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) aus. | DBA | 
| Überprüfen Sie die Routingliste. | Stellen Sie von SQL Server Management Studio aus eine Connect der primären Instanz her, und führen Sie den *Schritt 4-Code* aus dem Abschnitt [Zusätzliche Informationen](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) aus, um die Routingliste zu überprüfen. | DBA | 

### Testen Sie das schreibgeschützte Routing
<a name="test-the-read-only-routing"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie mithilfe des `ApplicationIntent` Parameters eine Verbindung her. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 
| Führen Sie einen Failover durch. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 

### Stellen Sie mithilfe des Befehlszeilenprogramms sqlcmd eine Verbindung her
<a name="connect-by-using-the-sqlcmd-command-line-utility"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie mithilfe von sqlcmd eine Connect. | Um von sqlcmd aus eine Verbindung herzustellen, führen Sie in der *Befehlszeile den Schritt 5-Code* aus dem Abschnitt [Zusätzliche Informationen](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) aus. Nachdem Sie die Verbindung hergestellt haben, führen Sie den folgenden Befehl aus, um den Namen des verbundenen Servers anzuzeigen.<pre>SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .</pre><br />In der Ausgabe wird der aktuelle Name des sekundären Replikats (`WSFCNODE1`) angezeigt. | DBA | 

## Fehlerbehebung
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Das Erstellen des Listeners schlägt fehl und es wird die Meldung „Der WSFC-Cluster konnte die Netzwerknamenressource nicht online bringen“ angezeigt. | Weitere Informationen finden Sie im Microsoft-Blogbeitrag [Create Listener Fails with Message 'The WSFC-Cluster could not bring the Network Name resource online'](https://techcommunity.microsoft.com/blog/sqlserversupport/create-listener-fails-with-message-the-wsfc-cluster-could-not-bring-the-network-/318235). | 
| Mögliche Probleme, einschließlich anderer Listener-Probleme oder Netzwerkzugriffsprobleme. | Weitere Informationen finden Sie unter [Problembehandlung bei der Konfiguration von Always-On-Verfügbarkeitsgruppen (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16) in der Microsoft-Dokumentation. | 

## Zugehörige Ressourcen
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-resources"></a>
+ [Konfigurieren Sie schreibgeschütztes Routing für eine Always-On-Verfügbarkeitsgruppe](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-ver16)
+ [Problembehandlung bei der Konfiguration von AlwaysOn-Verfügbarkeitsgruppen (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16)

## Zusätzliche Informationen
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional"></a>

*Schritt 1. Aktualisieren Sie die Replikate so, dass sie schreibgeschützt sind*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
```

*Schritt 2. Erstellen Sie die Routing-URL*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433'))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433'))
GO
```

*Schritt 3. Erstellen Sie die Routing-Liste*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1')));
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2')));
GO
```

*Schritt 4. Validieren Sie die Routing-Liste*

```
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
```

*Schritt 5. SQL-Befehlsdienstprogramm*

```
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly
```