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
# 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 ();
In den folgenden Beispielen wird die Anmeldung jeweils verkürzt angegeben:
session = sapdb.dbm.DBM (’’, $ARGV [2], $ARGV [0] . ’,’ . $ARGV [1])
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 ();
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 ();