2017-01-21 2 views
1

Ich versuche, eine Verbindung mit einer Sybase-Datenbank mit Metadaten über Skype namens skype2 herzustellen. Der Code in Perl, und ich verwende das DBI-Modul, um eine Verbindung herzustellen.Den richtigen Port zum Verbinden mit der Skype-Datenbank finden

Hier ist mein Code:

my $dbh = DBI->connect("dbi:Sybase:server=skype2;database=*****", 'user', 'pass', {PrintError => 1}); 

Ich habe einen [skype2] DSN in freetds.conf, in /etc einzurichten:

[skype2] 
    host = **.**.**.** 
    port = 49396 
    tds version = 7.0 

Das Problem ist, dass ich den Port dynamisch finden müssen durch eine Datenbankabfrage (hier ist es 49396). Sollte ich Netstat verwenden, um eine Verbindung herzustellen und nach dem richtigen Port zu suchen, oder gibt es einen besseren Weg?

Vielen Dank für Ihre Antwort.

+0

Ist dies über die Microsoft-Chat-Software Skype? – simbabque

+0

@simbabque Ich weiß es nicht genau.Ich benutze diese Datenbank, um alle Skype-Anrufe für ein bestimmtes Verzeichnis zu finden! – farzane

+0

Ich nehme an, Sie meinen Sybase, nicht MySQL, wie der Name des Treibers sagt? Es scheint also, dass Ihre Ops entschieden haben, den Datenbankserver auf einem nicht standardmäßigen Port auszuführen, und Sie müssen nur eine Verbindung zu ihm herstellen. Da sie wahrscheinlich die Portzuordnungen nicht jeden Tag ändern werden, erscheint es vernünftig, den Port einmal zu finden und die Konfigurationsdatei entsprechend zu ändern. Eigentlich sollte dies irgendwo dokumentiert werden, so dass Sie mit netstat nicht herumalbern müssen ... – mbethke

Antwort

0

Wenn ich richtig verstanden habe, müssen Sie eine Verbindung zu einer Datenbank herstellen, um den Port der sekundären Datenbank zu finden. Sie können die PORT als Teil der Verbindungszeichenfolge angeben, auch als Variable. Hier ist ein Beispiel für eine Verbindungszeichenfolge, die Ihnen helfen soll:

my $port = "1433"; 
my $dbh = DBI->connect('DBI:ODBC:DRIVER={FreeTDS};SERVER=yourfullserver.com;PORT=' . $port . ';DATABASE=yourdbname;TDS_Version=7.2', 'user', 'password', {PrintError => 1}); 

Damit können Sie eine Verbindung zu einem dynamischen Port herstellen. Stellen Sie also eine Verbindung zu Ihrem ersten Server her, holen Sie die benötigte Portnummer aus der Datenbank und speichern Sie sie in einer Variablen, und stellen Sie eine Verbindung zur zweiten Datenbank her. Viel Glück!

Verwandte Themen