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.
Wenn der Client mit dieser IP-Adresse eine Verbindung zum Datenbankserver aufnimmt, vergleicht er den Namen des Datenbankservers mit dem von ServerName angegebenen Wert.
Wenn der Datenbankservername übereinstimmt, kommt die Verbindung erfolgreich zustande.
Wenn der Datenbankservername nicht übereinstimmt, entfernt der Client den Eintrag aus der sasrv.ini-Datei und der Client versucht, eine direkte TCP/IP-Verbindung einzurichten. Siehe Schritt 2: Versuch einer TCP/IP-Verbindung mit der (den) Adresse(n), die im Host-Verbindungsparameter angegeben ist/sind.
Wenn der Client keine Verbindung herstellen kann, entfernt er den Eintrag aus der sasrv.ini-Datei und versucht, eine direkte TCP/IP- Verbindung einzurichten. Siehe Schritt 2: Versuch einer TCP/IP-Verbindung mit der (den) Adresse(n), die im Host-Verbindungsparameter angegeben ist/sind.
Der Dateiname für den Datenbankserver-Adressencache ist unter Unix .sasrv.ini. Siehe Caching der Datenbankserver-Adressinformationen der sasrv.ini-Datei im Cache für schnellere Verbindungen.
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.
UDP-Pakete können folgende Datenbankserver nicht finden:
Einen Datenbankserver unter Mac OS X, der nicht am Port 2638 auf Verbindungen wartet. Siehe ServerPort-Protokolloption (PORT).
Einen Datenbankserver, der mit der Option -sb 0 gestartet wurde. Siehe -sb - dbeng12/dbsrv12-Serveroption.
Einen Datenbankserver, dessen UDP-Anforderungen durch eine Firewall, einen Router oder ein Gateway blockiert sind. Siehe Verbinden über eine Firewall hinweg.
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.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |