Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärtBeispiele für das Modul SAP::DBTech::dbm Dokument im Navigationsbaum lokalisieren

Um eine Verbindung aufzubauen, übergeben Sie in den folgenden Beispielen die Argumente jeweils auf der Kommandozeile.

Mit folgendem Kommando rufen Sie das Perl-Skript sample.pl auf und melden sich als DBM-Benutzer OLEG mit Kennwort MONDAY an die Datenbankinstanz DEMODB an.

perl sample.pl OLEG MONDAY DEMODB

Aufbau einer Verbindung

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Parsen der Aufrufargumente

# --------------------------

my $user_name = $ARGV [0];

my $password = $ARGV [1];

my $database_name = $ARGV [2];

# Aufbau einer Database Manager-Sitzung

# ---------------------------------------

my $session = new DBM ('', $database_name, '', "$user_name,$password");

# Abmelden

# -------------------------------------

$session->release ();

Hinweis

In den folgenden Beispielen wird die Anmeldung jeweils verkürzt angegeben:

session = sapdb.dbm.DBM (’’, $ARGV [2], $ARGV [0] . ’,’ . $ARGV [1])

Auflisten aller Datenbanken

Mit der Methode cmd können Sie DBM-Kommandos ausführen. Das Ergebnis ist eine Zeichenkette, die mit Perl weiterverarbeitet werden kann.

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Aufbau einer Database Manager-Sitzung

# ------------------------------------------------------

my $session = new DBM ('', $ARGV [2], '', $ARGV [0] . ',' . $ARGV [1]);

 

# Ausführen des DBM-Kommandos, mit dem alle Datenbankinstanzen

# aufgelistet werden. Das Ergebnis ist eine Zeichenkette.

output = session.cmd ('db_enum')

my $dbstate = 'offline';

my $lastdb = '';

# Einzelne Datenbankinstanzen sind durch Zeilenumbrüche getrennt.

foreach my $line (split /\n/, $output){

    # Datenfelder sind durch Tabulatorzeichen getrennt.

    my ($name, $instroot, $release, $kind, $state) = split /\t/, $line;

    if ($name ne $lastdb) {

        # Es existieren mehrere Zeilen pro Datenbankinstanz,

        # maximal je eine für die Kernvarianten

        # fast und slow.

        if ($lastdb ne '') {

            print "$lastdb\t$dbstate\n";

        }

        $lastdb = $name;

        $dbstate = 'offline';

    }

    # Die Datenbank ist aktiv, wenn eine der Kernvarianten

    # als 'running' angezeigt wird.

    if ($state eq 'running') {

        $dbstate = $state;

    }

}

print "$lastdb\t$dbstate\n";

$session->release ();

Behandeln von Fehlersituationen

Wenn innerhalb der Methode cmd ein Fehler auftritt, dann wird eine Ausnahme erzeugt. Diese Ausnahme können Sie durch eval abfangen und mit der Systemvariablen $@ abfragen.

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Aufbau einer Database Manager-Sitzung

# -----------------------------------------

my $session = new DBM ('', $ARGV [2], '', $ARGV [0] . ',' . $ARGV [1]);

foreach my $cmd (('db_state', 'invalid command')) {

    eval {

        my $result = $session->cmd ($cmd);

        # Ausgabe des Ergebnisses

        print "$cmd: OK  $result\n";

        };

    if ($@) {

        # Ausgabe der Fehlermeldung

        print "$CMD: ERR $@\n";

    }

}

$session->release ();

 

Ende des Inhaltsbereichs