Vorgehensweise: Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL)

Jede Instanz eines Datenbankspiegelungsservers erfordert einen eindeutigen Überwachungsport, der dem Datenbankspiegelungsendpunkt der Instanz zugewiesen ist. Eine Serverinstanz kann nur über einen Datenbankspiegelungsendpunkt verfügen, der einen einzelnen Port besitzt. Ein Datenbankspiegelungsendpunkt kann einen beliebigen Port verwenden, der auf dem lokalen System verfügbar ist, wenn der Endpunkt erstellt wird. Alle Datenbankspiegelungssitzungen auf einer Serverinstanz überwachen diesen Port, und alle eingehenden Verbindungen für die Datenbankspiegelung verwenden diesen Port.

Beim Erstellen des Endpunktes gibt der Systemadministrator die Authentifizierungs- und Verschlüsselungsmethoden der Serverinstanz an.

Wichtiger HinweisWichtig

Wenn ein Endpunkt für die Datenbankspiegelung vorhanden ist und bereits verwendet wird, empfiehlt es sich, diesen Endpunkt auf der Serverinstanz für jede Sitzung zu verwenden. Durch Löschen eines verwendeten Endpunktes werden die Verbindungen der vorhandenen Sitzungen getrennt. Wenn für eine Sitzung ein Zeuge festgelegt wurde, kann das Entfernen des Endpunkts für die Datenbankspiegelung dazu führen, dass der Prinzipalserver der Sitzung das Quorum verliert. In diesem Fall wird die Datenbank offline gebracht und die Verbindung zu den Benutzern getrennt. Weitere Informationen finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit.

So erstellen Sie einen Spiegelungsendpunkt mit Windows-Authentifizierung

  1. Stellen Sie eine Verbindung mit der Serverinstanz her, für die Sie einen Endpunkt für die Datenbankspiegelung erstellen möchten.

  2. Ermitteln Sie mithilfe der folgenden Anweisung, ob ein Endpunkt für die Datenbankspiegelung bereits vorhanden ist:

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints 
    
    Wichtiger HinweisWichtig

    Falls bereits ein Endpunkt der Datenbankspiegelung für die Serverinstanz vorhanden ist, verwenden Sie diesen Endpunkt für alle anderen Sitzungen, die Sie für die Serverinstanz einrichten.

  3. Wenn Sie Transact-SQL zum Erstellen eines Endpunktes verwenden möchten, der mit Windows-Authentifizierung verwendet werden soll, verwenden Sie eine CREATE ENDPOINT-Anweisung. Die Anweisung weist folgende allgemeine Form auf:

    CREATE ENDPOINT <endpointName>

        STATE=STARTED

        AS TCP ( LISTENER_PORT = <listenerPortList> )

        FOR DATABASE_MIRRORING

        (

            [ AUTHENTICATION = WINDOWS [ <authorizationMethod> ]

            ]

            [ [,] ENCRYPTION = REQUIRED

                    [ ALGORITHM { <algorithm> } ]

            ]

            [,] ROLE = <role>

        )

    Dabei gilt:

    • <endpointName> ist der eindeutige Name für den Endpunkt der Datenbankspiegelung der Serverinstanz.

    • STARTED gibt an, dass der Endpunkt gestartet werden und mit der Überwachung auf Verbindungen beginnen soll. Ein Endpunkt der Datenbankspiegelung wird in der Regel im Status STARTED erstellt. Alternativ können Sie eine Sitzung in einem Status STOPPED (die Standardeinstellung) oder DISABLED erstellen.

    • <listenerPortList> ist eine einzelne Portnummer (nnnn), an der der Server Datenbankspiegelungsnachrichten überwachen soll. Nur TCP ist zulässig; wenn Sie ein anderes Protokoll angeben, wird ein Fehler ausgelöst.

      Eine Portnummer kann in einem Computersystem nur einmal verwendet werden. Ein Datenbankspiegelungsendpunkt kann einen beliebigen Port verwenden, der auf dem lokalen System verfügbar ist, wenn der Endpunkt erstellt wird. Verwenden Sie die folgende Transact-SQL-Anweisung, um den Port anzugeben, der zurzeit von TCP-Endpunkten im System verwendet wird:

      SELECT name, port FROM sys.tcp_endpoints
      
      Wichtiger HinweisWichtig

      Für jede Serverinstanz ist ein und nur ein eindeutiger Überwachungsport erforderlich.

    • Für Windows-Authentifizierung ist die AUTHENTICATION-Option optional, wenn der Endpunkt nicht ausschließlich NTLM oder Kerberos zum Authentifizieren von Verbindungen verwenden soll. Durch <authorizationMethod> wird die Methode angegeben, die zum Authentifizieren von Verbindungen verwendet wird: NTLM, KERBEROS oder NEGOTIATE. Die Standardeinstellung, NEGOTIATE, bewirkt, dass der Endpunkt das Aushandlungsprotokoll von Windows verwendet, um NTLM oder Kerberos auszuwählen. Die Verbindungsverhandlung ermöglicht abhängig von der Authentifizierungsebene des gegenüberliegenden Endpunktes Verbindungen mit oder ohne Authentifizierung. Informationen zu diesen Methoden finden Sie unter Endpunktauthentifizierungs-Typen.

    • ENCRYPTION wird standardmäßig auf REQUIRED festgelegt. Dies bedeutet, dass alle Verbindungen mit diesem Endpunkt Verschlüsselungen verwenden müssen. Sie können die Verschlüsselung jedoch auch deaktivieren oder als optional für einen Endpunkt festlegen. Die Alternativen lauten folgendermaßen:

      Wert

      Definition

      DISABLED

      Gibt an, dass über eine Verbindung gesendete Daten nicht verschlüsselt werden.

      SUPPORTED

      Gibt an, dass die Daten nur verschlüsselt werden, wenn der gegenüberliegende Endpunkt entweder SUPPORTED oder REQUIRED angibt.

      REQUIRED

      Gibt an, dass über eine Verbindung gesendete Daten verschlüsselt werden müssen.

      Wenn eine Endpunkt Verschlüsselung erfordert, muss für den anderen Endpunkt ENCRYPTION auf SUPPORTED oder REQUIRED festgelegt werden.

    • <algorithm> stellt die Option zum Angeben der Verschlüsselungsstandards für den Endpunkt bereit. Der Wert von <algorithm> kann einer der folgenden Algorithmen oder eine Kombination aus Algorithmen sein: RC4, AES, AES RC4 oder RC4 AES.

      AES RC4 gibt an, dass dieser Endpunkt den Verschlüsselungsalgorithmus verhandelt, wobei der AES-Algorithmus bevorzugt wird. RC4 AES gibt an, dass dieser Endpunkt den Verschlüsselungsalgorithmus verhandelt, wobei der RC4-Algorithmus bevorzugt wird. Wenn beide Endpunkte beide Algorithmen angeben, jedoch in unterschiedlicher Reihenfolge, wird die Einstellung des Endpunktes verwendet, der die Verbindung annimmt.

      HinweisHinweis

      Obwohl deutlich schneller als AES, ist RC4 ein relativ schwacher Algorithmus, während AES ein relativ starker Algorithmus ist. Aus diesem Grund empfiehlt sich die Verwendung des AES-Algorithmus.

    • <role> definiert die Rolle bzw. Rollen, die der Server ausführen kann. Die Angabe von ROLE ist erforderlich.

      Damit eine Serverinstanz als eine Rolle für eine Datenbankspiegelungssitzung und eine andere Rolle für eine andere Sitzung fungieren kann, geben Sie ROLE=ALL an. Wenn Sie eine Serverinstanz auf die Partner- oder Zeugenrolle beschränken möchten, geben Sie ROLE=PARTNER bzw. ROLE=WITNESS an.

      HinweisHinweis

      Für SQL Server Express ist WITNESS die einzige verfügbare Option.

    Eine vollständige Beschreibung der CREATE ENDPOINT-Syntax finden Sie unter CREATE ENDPOINT (Transact-SQL).

    HinweisHinweis

    Verwenden Sie ALTER ENDPOINT (Transact-SQL), um einen vorhandenen Endpunkt zu ändern.

Beispiel

Im folgenden Beispiel werden Endpunkte für die Standardserverinstanzen auf drei separaten Computersystemen erstellt:

Rolle der Serverinstanz

Name des Hostcomputers

Partner (anfangs die Prinzipalrolle)

SQLHOST01\.

Partner (anfangs die Spiegelrolle)

SQLHOST02\.

Zeuge

SQLHOST03\.

In diesem Beispiel verwenden alle drei Endpunkte die Portnummer 7022, wobei jede verfügbare Portnummer möglich wäre. Die Option AUTHENTICATION ist unnötig, da die Endpunkte den Standardtyp, also die Windows-Authentifizierung verwenden. Die Option ENCRYPTION ist ebenfalls überflüssig, da alle Endpunkte das Authentifizierungsverfahren für eine Verbindung aushandeln sollen, was bei der Windows-Authentifizierung das Standardverhalten darstellt. Außerdem erfordern alle Endpunkte die Verschlüsselung, was ebenfalls zum Standardverhalten gehört.

Jede Serverinstanz ist darauf beschränkt, entweder als Partner oder als Zeuge zu agieren, und der Endpunkt jedes Servers legt die Rolle ausdrücklich fest (ROLE=PARTNER oder ROLE=WITNESS).

Wichtiger HinweisWichtig

Jede Serverinstanz kann nur einen Endpunkt besitzen. Wenn Sie daher wollen, dass eine Serverinstanz in einigen Sitzungen als Partner und in anderen als Zeuge agiert, müssen Sie ROLE=ALL festlegen.

--Endpoint for initial principal server instance, which
--is the only server instance running on SQLHOST01.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for initial mirror server instance, which
--is the only server instance running on SQLHOST02.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for witness server instance, which
--is the only server instance running on SQLHOST03.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=WITNESS);
GO

Ein vollständiges Beispiel mit Sicherheitssetup, Vorbereitung der Spiegeldatenbank, Einrichten der Partner und Hinzufügen eines Zeugen finden Sie unter Einrichten der Datenbankspiegelung.