Konfigurieren des schreibgeschützten Zugriffs auf ein Verfügbarkeitsreplikat (SQL Server)Configure Read-Only Access on an Availability Replica (SQL Server)

Standardmäßig sind sowohl der Lese-/Schreibzugriff als auch der Zugriff für beabsichtigte Lesevorgänge für das primäre Replikat zulässig, während für sekundäre Replikate einer AlwaysOn-Verfügbarkeitsgruppe keine Verbindungen zulässig sind.By default both read-write and read-intent access are allowed to the primary replica and no connections are allowed to secondary replicas of an Always On availability group. In diesem Thema wird beschrieben, wie der Verbindungszugriff für ein Verfügbarkeitsreplikat einer AlwaysOn-Verfügbarkeitsgruppe in SQL Server 2017SQL Server 2017 unter Verwendung von SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLoder PowerShell konfiguriert wird.This topic describes how to configure connection access on an availability replica of an Always On availability group in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell.

Informationen dazu, welche Auswirkungen die Aktivierung des schreibgeschützten Zugriffs für ein sekundäres Replikat hat, und eine Einführung in den Verbindungszugriff finden Sie unter Informationen zum Clientverbindungszugriff auf Verfügbarkeitsreplikate (SQL Server) und Aktive sekundäre Replikate: Lesbare sekundäre Replikate (AlwaysOn-Verfügbarkeitsgruppen).For information about the implications of enabling read-only access for a secondary replica and for an introduction to connection access, see About Client Connection Access to Availability Replicas (SQL Server) and Active Secondaries: Readable Secondary Replicas (Always On Availability Groups).

Vorbereitungen Before You Begin

Voraussetzungen und Einschränkungen Prerequisites and Restrictions

  • Um einen anderen Verbindungszugriff zu konfigurieren, benötigen Sie eine Verbindung zur Serverinstanz, die das primäre Replikat hostet.To configure different connection access, you must be connected to the server instance that hosts the primary replica.

Sicherheit Security

Berechtigungen Permissions

TaskTask BerechtigungenPermissions
So konfigurieren Sie Replikate beim Erstellen einer VerfügbarkeitsgruppeTo configure replicas when creating an availability group Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin und die CREATE AVAILABILITY GROUP-Serverberechtigung, ALTER ANY AVAILABILITY GROUP-Berechtigung oder CONTROL SERVER-Berechtigung.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.
So ändern Sie ein VerfügbarkeitsreplikatTo modify an availability replica Erfordert die ALTER AVAILABILITY GROUP-Berechtigung für die Verfügbarkeitsgruppe, die CONTROL AVAILABILITY GROUP-Berechtigung, die ALTER ANY AVAILABILITY GROUP-Berechtigung oder die CONTROL SERVER-Berechtigung.Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Verwendung von SQL Server Management Studio Using SQL Server Management Studio

So konfigurieren Sie den Zugriff auf einem VerfügbarkeitsreplikatTo configure access on an availability replica

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit der Serverinstanz her, die das primäre Verfügbarkeitsreplikat hostet, und erweitern Sie die Serverstruktur.In Object Explorer, connect to the server instance that hosts the primary replica, and expand the server tree.

  2. Erweitern Sie die Knoten Hohe Verfügbarkeit mit AlwaysOn und Verfügbarkeitsgruppen .Expand the Always On High Availability node and the Availability Groups node.

  3. Klicken Sie auf die Verfügbarkeitsgruppe, deren Replikat geändert werden soll.Click the availability group whose replica you want to change.

  4. Klicken Sie mit der rechten Maustaste auf das Verfügbarkeitsreplikat, und klicken Sie auf Eigenschaften.Right-click the availability replica, and click Properties.

  5. Im Dialogfeld Eigenschaften des Verfügbarkeitsreplikats können Sie den Verbindungszugriff für die primäre Rolle und die sekundäre Rolle wie folgt ändern:In the Availability Replica Properties dialog box, you can change the connection access for the primary role and for the secondary role, as follows:

    • Wählen Sie für die sekundäre Rolle aus der Dropdownliste für die lesbare sekundäre Rolle **** wie folgt einen neuen Wert aus:For the secondary role, select a new value from the Readable secondary drop list, as follows:

      NeinNo
      Es werden keine Verbindungen mit sekundären Datenbanken dieses Replikats zugelassen.No user connections are allowed to secondary databases of this replica. Sie sind für den Lesezugriff nicht verfügbar.They are not available for read access. Dies ist die Standardeinstellung.This is the default setting.

      Nur beabsichtigte LesevorgängeRead-intent only
      Es sind nur schreibgeschützte Verbindungen zu sekundären Datenbanken dieses Replikats zulässig.Only read-only connections are allowed to secondary databases of this replica. Die sekundären Datenbanken sind alle für Lesezugriff verfügbar.The secondary database(s) are all available for read access.

      jaYes
      Alle Verbindungen zu sekundären Datenbanken dieses Replikats sind zugelassen, aber nur für Lesezugriff.All connections are allowed to secondary databases of this replica, but only for read access. Die sekundären Datenbanken sind alle für Lesezugriff verfügbar.The secondary database(s) are all available for read access.

    • Wählen Sie für die primäre Rolle aus der Dropdownliste für Verbindungen in der primären Rolle **** einen neuen Wert wie folgt aus:For the primary role, select a new value from the Connections in primary role drop list, as follows:

      Alle Verbindungen zulassenAllow all connections
      Für die Datenbanken im primären Replikat sind alle Verbindungen zugelassen.All connections are allowed to the databases in the primary replica. Dies ist die Standardeinstellung.This is the default setting.

      Verbindungen mit Lese-/Schreibzugriff zulassenAllow read/write connections
      Wenn die Eigenschaft für die Anwendungsabsicht auf ReadWrite festgelegt ist oder keine Verbindungseigenschaft für die Anwendungsabsicht festgelegt wurde, wird die Verbindung zugelassen.When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. Verbindungen, bei denen die Verbindungseigenschaft für die Anwendungsabsicht auf ReadOnly festgelegt ist, werden zugelassen.Connections where the Application Intent connection property is set to ReadOnly are not allowed. Dies kann verhindern, dass Kunden mit dem primären Replikat versehentlich eine leseintensive Arbeitsauslastung verbinden.This can help prevent customers from connecting a read-intent work load to the primary replica by mistake. Weitere Informationen zur Verbindungseigenschaft für die Anwendungsabsicht finden Sie unter Using Connection String Keywords with SQL Server Native Client.For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

Verwenden von Transact-SQL Using Transact-SQL

So konfigurieren Sie den Zugriff auf einem VerfügbarkeitsreplikatTo configure access on an availability replica

Hinweis

Ein Beispiel für diese Prozedur finden Sie weiter unten in diesem Abschnitt unter Beispiel (Transact-SQL).For an example of this procedure, see Example (Transact-SQL), later in this section.

  1. Stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet.Connect to the server instance that hosts the primary replica.

  2. Wenn Sie ein Replikat für eine neue Verfügbarkeitsgruppe angeben, verwenden Sie die -Anweisung Transact-SQLTransact-SQL .If you are specifying a replica for a new availability group, use the CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL statement. Verwenden Sie zum Hinzufügen oder Ändern eines Replikats für eine vorhandene Verfügbarkeitsgruppe die -Anweisung Transact-SQLTransact-SQL .If you are adding or modifying a replica of an existing availability group, use the ALTER AVAILABILITY GROUP Transact-SQLTransact-SQL statement.

    • Geben Sie zum Konfigurieren des Verbindungszugriffs für die sekundäre Rolle in der ADD REPLICA- bzw. MODIFY REPLICA WITH-Klausel die SECONDARY_ROLE-Option wie folgt an:To configure connection access for the secondary role, in the ADD REPLICA or MODIFY REPLICA WITH clause, specify the SECONDARY_ROLE option, as follows:

      SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )

      Erläuterungen:where,

      NeinNO
      Es werden keine direkten Verbindungen mit sekundären Datenbanken dieses Replikats zugelassen.No direct connections are allowed to secondary databases of this replica. Sie sind für den Lesezugriff nicht verfügbar.They are not available for read access. Dies ist die Standardeinstellung.This is the default setting.

      READ_ONLYREAD_ONLY
      Es sind nur schreibgeschützte Verbindungen zu sekundären Datenbanken dieses Replikats zulässig.Only read-only connections are allowed to secondary databases of this replica. Die sekundären Datenbanken sind alle für Lesezugriff verfügbar.The secondary database(s) are all available for read access.

      ALLALL
      Alle Verbindungen zu sekundären Datenbanken dieses Replikats sind zugelassen, aber nur für Lesezugriff.All connections are allowed to secondary databases of this replica, but only for read access. Die sekundären Datenbanken sind alle für Lesezugriff verfügbar.The secondary database(s) are all available for read access.

  3. Geben Sie zum Konfigurieren des Verbindungszugriffs für die primäre Rolle in der ADD REPLICA- bzw. MODIFY REPLICA WITH-Klausel die PRIMARY_ROLE-Option wie folgt an:To configure connection access for the primary role, in the ADD REPLICA or MODIFY REPLICA WITH clause, specify the PRIMARY_ROLE option, as follows:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    Erläuterungen:where,

    READ_WRITEREAD_WRITE
    Verbindungen, bei denen die Verbindungseigenschaft für die Anwendungsabsicht auf ReadOnly festgelegt ist, werden nicht zugelassen.Connections where the Application Intent connection property is set to ReadOnly are disallowed. Wenn die Eigenschaft für die Anwendungsabsicht auf ReadWrite festgelegt ist oder keine Verbindungseigenschaft für die Anwendungsabsicht festgelegt wurde, wird die Verbindung zugelassen.When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. Weitere Informationen zur Verbindungseigenschaft für die Anwendungsabsicht finden Sie unter Using Connection String Keywords with SQL Server Native Client.For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

    ALLALL
    Für die Datenbanken im primären Replikat sind alle Verbindungen zugelassen.All connections are allowed to the databases in the primary replica. Dies ist die Standardeinstellung.This is the default setting.

Beispiel (Transact-SQL) Example (Transact-SQL)

Im folgenden Beispiel wird einer Verfügbarkeitsgruppe namens AG2ein sekundäres Replikat hinzugefügt.The following example adds a secondary replica to an availability group named AG2. Zum Hosten des neuen Verfügbarkeitsreplikats wurde die eigenständige Serverinstanz COMPUTER03\HADR_INSTANCEangegeben.A stand-alone server instance, COMPUTER03\HADR_INSTANCE, is specified to host the new availability replica. Dieses Replikat ist zum ausschließlichen Zulassen von Verbindungen mit Lese-/Schreibzugriff für die primäre Rolle sowie zum ausschließlichen Zulassen von Verbindungen mit beabsichtigten Lesevorgängen konfiguriert.This replica configured to allow only read-write connections for the primary role and to allow only read-intent connections for secondary role.

ALTER AVAILABILITY GROUP AG2   
   ADD REPLICA ON   
      'COMPUTER03\HADR_INSTANCE' WITH   
         (  
         ENDPOINT_URL = 'TCP://COMPUTER03:7022',  
         PRIMARY_ROLE ( ALLOW_CONNECTIONS = READ_WRITE ),  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY )  
         );   
GO  

PowerShell Using PowerShell

So konfigurieren Sie den Zugriff auf einem VerfügbarkeitsreplikatTo configure access on an availability replica

Hinweis

Ein Codebeispiel finden Sie weiter unten in diesem Abschnitt unter Beispiel (PowerShell).For a code example, see Example (PowerShell), later in this section.

  1. Wechseln Sie mitcdin das Verzeichnis der Serverinstanz, auf der das primäre Replikat gehostet wird.Change directory (cd) to the server instance that hosts the primary replica.

  2. Verwenden Sie zum Hinzufügen eines Verfügbarkeitsreplikats zu einer Verfügbarkeitsgruppe das Cmdlet New-SqlAvailabilityReplica .When adding an availability replica to an availability group, use the New-SqlAvailabilityReplica cmdlet. Verwenden Sie zum Ändern eines vorhandenen Verfügbarkeitsreplikats das Cmdlet Set-SqlAvailabilityReplica .When modifying an existing availability replica, use the Set-SqlAvailabilityReplica cmdlet. Die relevanten Parameter lauten wie folgt:The relevant parameters are as follows:

    • Um den Verbindungszugriff für die sekundäre Rolle zu konfigurieren, geben Sie den Parameter ConnectionModeInSecondaryRole secondary_role_keyword an, wobei secondary_role_keyword einem der folgenden Werte entspricht:To configure connection access for the secondary role, specify the ConnectionModeInSecondaryRolesecondary_role_keyword parameter, where secondary_role_keyword equals one of the following values:

      AllowNoConnectionsAllowNoConnections
      Für die Datenbanken im sekundären Replikat sind keine direkten Verbindungen zugelassen, und die Datenbanken sind für den Lesezugriff nicht verfügbar.No direct connections are allowed to the databases in the secondary replica and the databases are not available for read access. Dies ist die Standardeinstellung.This is the default setting.

      AllowReadIntentConnectionsOnlyAllowReadIntentConnectionsOnly
      Verbindungen mit den Datenbanken im sekundären Replikat sind nur zulässig, wenn die Eigenschaft für die Anwendungsabsicht auf ReadOnlyfestgelegt ist.Connections are allowed only to the databases in the secondary replica where the Application Intent property is set to ReadOnly. Weitere Informationen zu dieser Eigenschaft finden Sie unter Using Connection String Keywords with SQL Server Native Client.For more information about this property, see Using Connection String Keywords with SQL Server Native Client.

      AllowAllConnectionsAllowAllConnections
      Für alle Verbindungen mit den Datenbanken im sekundären Replikat ist der schreibgeschützte Zugriff zugelassen.All connections are allowed to the databases in the secondary replica for read-only access.

    • Um den Verbindungszugriff für die primäre Rolle zu konfigurieren, geben Sie ConnectionModeInPrimaryRole primary_role_keyword an, wobei primary_role_keyword einem der folgenden Werte entspricht:To configure connection access for the primary role, specify ConnectionModeInPrimaryRoleprimary_role_keyword, where primary_role_keyword equals one of the following values:

      AllowReadWriteConnectionsAllowReadWriteConnections
      Verbindungen, bei denen die Verbindungseigenschaft für die Anwendungsabsicht auf ReadOnly festgelegt ist, werden nicht zugelassen.Connections where the Application Intent connection property is set to ReadOnly are disallowed. Wenn die Eigenschaft für die Anwendungsabsicht auf ReadWrite festgelegt ist oder keine Verbindungseigenschaft für die Anwendungsabsicht festgelegt wurde, wird die Verbindung zugelassen.When the Application Intent property is set to ReadWrite or the Application Intent connection property is not set, the connection is allowed. Weitere Informationen zur Verbindungseigenschaft für die Anwendungsabsicht finden Sie unter Using Connection String Keywords with SQL Server Native Client.For more information about Application Intent connection property, see Using Connection String Keywords with SQL Server Native Client.

      AllowAllConnectionsAllowAllConnections
      Für die Datenbanken im primären Replikat sind alle Verbindungen zugelassen.All connections are allowed to the databases in the primary replica. Dies ist die Standardeinstellung.This is the default setting.

    Hinweis

    Um die Syntax eines Cmdlets anzuzeigen, verwenden Sie das Cmdlet Get-Help in der SQL Server 2017SQL Server 2017 -PowerShell-Umgebung.To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL Server 2017SQL Server 2017 PowerShell environment. Weitere Informationen finden Sie unter Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

    Einrichten und Verwenden des SQL Server PowerShell-AnbietersTo set up and use the SQL Server PowerShell provider

Beispiel (PowerShell) Example (PowerShell)

Im folgenden Beispiel wird sowohl der ConnectionModeInSecondaryRole -Parameter als auch der ConnectionModeInPrimaryRole -Parameter auf AllowAllConnectionsfestgelegt.The following example, sets the both the ConnectionModeInSecondaryRole and ConnectionModeInPrimaryRole parameters to AllowAllConnections.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
Set-SqlAvailabilityReplica -ConnectionModeInSecondaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ConnectionModeInPrimaryRole "AllowAllConnections" `   
-InputObject $primaryReplica  

Nachverfolgung: Nach der Konfiguration des schreibgeschützten Zugriffs für ein Verfügbarkeitsreplikat Follow Up: After Configuring Read-Only Access for an Availability Replica

Schreibgeschützter Zugriff auf ein lesbares sekundäres ReplikatRead-only access to a readable secondary replica

  • Bei Verwendung der Hilfsprogramme bcp oder sqlcmdkönnen Sie den schreibgeschützten Zugriff für jedes sekundäre Replikat angeben, das den schreibgeschützten Zugriff unterstützt, indem Sie den Switch -K ReadOnly angeben.When using the bcp Utility or sqlcmd Utility, you can specify read-only access to any secondary replica that is enabled for read-only access by specifying the -K ReadOnly switch.

  • So ermöglichen Sie, dass Clientanwendungen eine Verbindung mit lesbaren sekundären Replikaten herstellen könnenTo enable client applications to connect to readable secondary replicas:

    VoraussetzungPrerequisite LinkLink
    KontrollkästchenCheckbox Stellen Sie sicher, dass die Verfügbarkeitsgruppe über einen Listener verfügt.Ensure that the availability group has a listener. Erstellen oder Konfigurieren eines Verfügbarkeitsgruppenlisteners (SQL Server)Create or Configure an Availability Group Listener (SQL Server)
    KontrollkästchenCheckbox Konfigurieren Sie das schreibgeschützte Routing für eine Verfügbarkeitsgruppe.Configure read-only routing for the availability group. Konfigurieren des schreibgeschützten Routing für eine Verfügbarkeitsgruppe (SQL Server)Configure Read-Only Routing for an Availability Group (SQL Server)

    Faktoren, die sich auf Trigger und Aufträge nach einem Failover auswirken könnenFactors that might affect triggers and jobs after a failover

    Wenn Sie Trigger und Aufträge haben, die beim Ausführen auf einer nicht lesbaren sekundären Datenbank oder einer lesbaren sekundären Datenbank fehlschlagen, müssen Sie ein Skript für die Trigger und Aufträge erstellen, die auf einem angegebenen Replikat kontrolliert werden sollen, um zu bestimmen, ob die Datenbank eine primäre Datenbank oder eine lesbare sekundäre Datenbank ist.If you have triggers and jobs that will fail when running on a non-readable secondary database or on a readable secondary database, you need to script the triggers and jobs to check on a given replica to determine whether the database is a primary database or is a readable secondary database. Um diese Informationen abzurufen, verwenden Sie die DATABASEPROPERTYEX -Funktion, um die Updatability -Eigenschaft der Datenbank zurückzugeben.To obtain this information, use the DATABASEPROPERTYEX function to return the Updatability property of the database. Um eine schreibgeschützte Datenbank zu identifizieren, geben Sie READ_ONLY wie folgt als Wert an:To identify a read-only database, specify READ_ONLY as the value, as follows:

DATABASEPROPERTYEX([db name],’Updatability’) = N’READ_ONLY’  

Um eine Datenbank mit Lese-/Schreibzugriff zu identifizieren, geben Sie READ_WRITE als Wert an.To identify a read-write database, specify READ_WRITE as the value.

Siehe auchSee Also

Übersicht über AlwaysOn-Verfügbarkeitsgruppen (SQL Server) Overview of Always On Availability Groups (SQL Server)
Aktive sekundäre Replikate: Lesbare sekundäre Replikate (Always On-Verfügbarkeitsgruppen) Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)
Informationen zum Clientverbindungszugriff auf Verfügbarkeitsreplikate (SQL Server)About Client Connection Access to Availability Replicas (SQL Server)