Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Datenbank starten und Verbindung mit ihr herstellen » SQL Anywhere-Datenbankverbindungen » Verbindungsfehlerbehandlung

 

SQL Anywhere-Datenbankserver mit dem Host-Verbindungsparameter ermitteln

Ein SQL Anywhere-Client, der versucht, einen Datenbankserver über TCP/IP unter Verwendung der Host-Verbindungsparameter zu finden, führt dabei folgende Schritte aus:

Wenn der Datenbankserver nicht gefunden wird, teilt das System in einer Meldung mit, dass der Server nicht gefunden wurde. Wenn ein anderer Fehler auftritt, schlägt der Verbindungsversuch fehl, ohne dass weitere Schritte versucht werden. Siehe Datenbankserver nicht gefunden.

Wenn sich der Client mit dem Datenbankserver erfolgreich verbunden hat, versucht er, eine Verbindung mit der Datenbank herzustellen. Siehe Finden der Datenbank.

  • Schritt 1: Überprüfen Sie den Datenbankserver-Adressencache (sasrv.ini)   Wenn die Verbindungszeichenfolge den Host-Verbindungsparameter enthält, aber nicht den Parameter ServerName, kann der SQL Anywhere-Client die sasrv.ini-Datei nicht verwenden. Siehe Schritt 2: Versuch einer TCP/IP-Verbindung mit der (den) Adresse(n), die im Host-Verbindungsparameter angegeben ist/sind.

    Der Client überprüft die sasrv.ini-Datei auf einen Eintrag, der mit dem Datenbankservernamen übereinstimmt, der vom Verbindungsparameter ServerName festgelegt wird.

    Wenn kein übereinstimmender Cacheeintrag gefunden wird, versucht der Client eine direkte TCP/IP- Verbindung. Siehe Schritt 2: Versuch einer TCP/IP-Verbindung mit der (den) Adresse(n), die im Host-Verbindungsparameter angegeben ist/sind.

    Wenn ein Cacheeintrag sowohl mit dem Verbindungsparameter ServerName als auch der vom Host-Verbindungsparameter festgelegten Adresse übereinstimmt, versucht der Client eine TCP/IP-Verbindung mit der IP-Adresse, die im Cache gelistet ist.

    • Schritt 1: Beispiel   Angenommen, es gibt einen Computer mit dem Hostnamen kangaroo und der IP-Adresse 10.25.13.5. Ein Datenbankserver namens joey läuft auf diesem Computer auf Port 49152.

      Für die Verbindungszeichenfolge Host=kangaroo;ServerName=joey findet der Client einen Eintrag in seiner sasrv.ini-Datei, der mit dem Servernamen joey übereinstimmt. Die IP-Adresse im Cache ist 10.25.13.5:49152. Der Client vergleicht die Adresse des angegebenen Hostnamens mit 10.25.13.5. Die Adressen stimmen überein, sodass der Client eine Verbindung über TCP/IP mit 10.25.13.5:49152 einrichtet und dann prüft, ob der verbundene Server joey heißt. Die Verbindung ist erfolgreich.

  • Schritt 2: Versuch einer TCP/IP-Verbindung mit der (den) Adresse(n), die im Host-Verbindungsparameter angegeben ist/sind   Wenn mehrere Adressen angegeben werden, versucht der Client, sich mit jeder Adresse in der Reihenfolge zu verbinden, in der sie im Host-Verbindungsparameter angegeben werden. Der Client versucht, Verbindungen aufzunehmen, bis eine Verbindung erfolgreich ist oder alle Adressen aufgebraucht sind.

    Wenn eine Adresse einen Port enthält, versucht der Client eine TCP/IP- Verbindung mit der angegebenen Adresse und Portnummer. Wenn kein Port angegeben ist, versucht der Client eine TCP/IP-Verbindung an der angegebenen Adresse über den Standardport 2638.

    • Wenn der Client eine Verbindung mit dem Datenbankserver herstellt und ServerName angegeben ist, vergleicht der Client den Namen des Datenbankservers mit dem von ServerName angegebenen Wert.

      Wenn der Datenbankservername übereinstimmt, kommt die Verbindung erfolgreich zustande. Der Client aktualisiert seine sasrv.ini-Datei.

      Wenn der Datenbankservername nicht übereinstimmt, versucht der Client eine Verbindung über UDP-Serversuchanforderungen. Siehe Schritt 3: UDP-Datenbankserver-Suchanforderungen absetzen.

    • Wenn der Client eine Verbindung mit dem Datenbankserver herstellt und ServerName nicht angegeben wurde, kommt die Verbindung erfolgreich zustande.

    • Wenn der Client keine Verbindung herstellen kann und ein ServerName-Parameter angegeben ist, versucht der Client eine Verbindung über UDP-Serversuchanforderungen. Siehe Schritt 3: UDP-Datenbankserver-Suchanforderungen absetzen.

    • Wenn der Client keine Verbindung herstellen kann und der ServerName-Parameter nicht angegeben wurde, schlägt die Verbindung fehl.

    • Schritt 2: Beispiel   Angenommen, es gibt einen Computer mit dem Hostnamen kangaroo und der IP-Adresse 10.25.13.5. Ein Datenbankserver namens joey läuft auf diesem Computer auf Port 49152. Dies ist das erste Mal, dass sich der Client mit diesem Server verbindet, daher gibt es keine im Cache gespeicherte Adresse in seiner sasrv.ini-Datei.

      Für die Verbindungszeichenfolge Host=kangaroo:49152;ServerName=joey verbindet sich der Client über TCP/IP mit 10.25.13.5:49152 und prüft dann, ob der verbundene Server joey heißt. Die Verbindung ist erfolgreich, daher aktualisiert der Client seine sasrv.ini-Datei.

  • Schritt 3: UDP-Datenbankserver-Suchanforderungen absetzen   Der SQL Anywhere-Client sendet UDP-Datenbankserver-Suchanforderungen nur aus, wenn die Verbindungszeichenfolge den ServerName-Verbindungsparameter enthält und der Host-Wert keinen Port angibt. UDP-Serversuchanforderungen werden an Port 2638 auf der angegebenen Adresse gesendet.

    Standardmäßig warten alle Datenbankserver auf demselben Computer (außer bei Mac OS X) auf Port 2638 auf UDP-Pakete. Unter Mac OS X kann nur ein Server auf Port 2638 auf UDP-Pakete warten. Wenn ein Datenbankserver eine UDP-Serversuchanforderung empfängt, vergleicht der Datenbankserver seinen Namen mit dem angegebenen Namen in der UDP-Anforderung. Wenn die Namen übereinstimmen, sendet der Datenbankserver ein UDP-Antwortpaket zurück, das seine IP-Adresse und die Portnummer enthält. Nur der übereinstimmende Datenbankserver sendet ein Antwortpaket.

    Standardmäßig wartet der Client bis zu fünf Sekunden auf eine UDP-Antwort. Wenn keine Antworten ankommen, werden die UDP-Pakete jede Sekunde erneut gesendet, bis bei diesem Prozess eine Zeitüberschreitung eintritt.

    Wenn der Client das UDP-Antwortpaket empfängt, versucht der Client eine TCP/IP-Verbindung mit der Adresse und dem Port, die im Paket angegeben sind.

    Wenn sich der Client mit einem Datenbankserver verbinden kann, kommt die Verbindung erfolgreich zustande. Der Client aktualisiert seine sasrv.ini-Datei.

    Hinweis

    UDP-Pakete können folgende Datenbankserver nicht finden:

    In beiden Fällen müsste die Angabe des Ports des Datenbankservers im Host-Verbindungsparameter eine erfolgreiche Verbindung des Clients ermöglichen.

    • Schritt 3: Beispiel   Angenommen, es gibt einen Computer mit dem Hostnamen kangaroo und der IP-Adresse 10.25.13.5. Ein Datenbankserver namens joey läuft auf diesem Computer auf Port 49152. Dies ist das erste Mal, dass sich der Client mit diesem Server verbindet, daher gibt es keine im Cache gespeicherte Adresse in seiner sasrv.ini-Datei.

      Mit der Verbindungszeichenfolge Host=kangaroo;ServerName=joey hat der Client versucht, eine Verbindung über TCP/IP zu 10.25.13.5:2638 aufzunehmen und der Versuch ist fehlgeschlagen (Schritt 2). Da in der Verbindungszeichenfolge keine Portnummer angegeben wurde, sendet der Client UDP-Serversuchanforderungen an die Adresse 10.25.13.5:2638. Der Datenbankserver joey wartet an der UDP-Adresse 10.25.13.5.2638 auf Verbindungen und antwortet mit der Adresse 10.25.13.5:49152. Der Client stellt eine Verbindung über TCP/IP mit 10.25.13.5:49152 her. Die Verbindung ist erfolgreich, daher aktualisiert der Client seine sasrv.ini-Datei.