Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:mi_dumptransactionlog_ad

mi_DumpTransactionLog_Ad

Sichert bzw. löscht das Transaktions-Log einer Datenbank (per default die Datenbank, in der diese Prozedur installiert ist).

Wenn ein anderer Prozeß schon ein „dump“ (egal ob für die komplette Datenbank oder das Transaktions-Log) ausführt, wird die Prozedur abgebrochen.

WICHTIG : Das Kommando zur Sicherung des Transaktions-Logs („dump“) wird mit „owner“-Rechten ausgeführt, deswegen sind keine besonderen ASE-Rechte/-Rollen erforderlich. Man kann aber ja auch das Log einer anderen Datenbank sichern lassen (s. Parameter „DatabaseName“), weswegen in so einem Fall dem Prozedur-„owner“ entweder auch „DatabaseName“ gehören muß oder ihm muß die ASE-Rolle 'sa' oder 'oper' zugewiesen sein. Ist dies nicht der Fall, gibt es den Fehler „-518“ !

Hinweise :

1.) Wenn ein „Settings“-Eintrag zum Schlüssel „DumpPath“ existiert, wird nicht der Befehl „dump … with no_log“ abgesetzt, sondern „dump … to …“, d.h. das Transaktions-Log wird in eine Datei (Dateiname : s. 2.) in dem durch „DumpPath“ angegebenen Verzeichnis gesichert. Dieser Pfad kann absolut angegeben werden (unter Linux z.B. dadurch, daß der Pfad mit „/“ beginnt). Falls nicht wird in das relativ zum „$SYBASE“-directory liegende Verzeichnis gesichert.

Falls ein „DumpPath“ konfiguriert ist, wird ein weiterer „Settings“-Eintrag in Betracht gezogen : „DumpWithStandbyAccess“.
Ist hierfür „1“ konfiguriert, wird der Befehl „dump … to … with standby_access“ ausgeführt.
ACHTUNG :
Diese Möglichkeit gibt es nur in bestimmten ASE-Versionen (z.B. NICHT im ASE11, wohl aber im ASE15). Hintergrund ist die Möglichkeit, eine Standby-Datenbank, in die die gesicherten Transaktions-Logs sukzessiv reingeladen werden, „online for standby_access“ setzen zu können, um z.B. eine Komplett-Sicherung oder „read-only reportings“ machen zu können.

2.) Falls in eine Datei gesichert wird (s. 1.), hat der Dateiname diese Form :
„<Datenbankname>_logdump_<Timestamp als Differenz des aktuellen Datums in Sekunden zu „DateOffset“>“.

Möchte man auch Millisekunden im Timestamp haben, setzt man „IncludeMSecondsInTimestamp“ auf „1“ - der Dateiname hat dann die Form :
„<Datenbankname>_logdump_<Timestamp in Sekunden zu „DateOffset“>.<verbleibende Millisekunden zu „DateOffset“>“.

Anmerkungen :
1. Die Millisekunden-Angabe ist immer dreistellig (d.h. evtl. mit führenden „0“en) !
2. Der eben beschriebene Dateiname wird direkt an den „DumpPath“ angehängt, so daß der konfigurierte Wert unbedingt mit dem „Verzeichnis-Trenner“ des jeweiligen Betriebssystems (in dem der ASE installiert ist) enden sollte (andernfalls erhält man i.d.R. nicht den gewünschten Zielort der Datei) !

3.) Schlägt die Methode des „dump“ens in eine Datei fehl, wird anschließend ein „dump … with no_log“ ausgeführt !

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategoriesystem administration
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
DatabaseNameNULL Name der Datenbank, dessen Transaktions-Log ge„dumped“ werden soll. Falls „NULL“ angegeben wird, wählt die Prozedur die Datenbank, in der sie installiert ist.
varchar(50)4.0.6
DateOffset'01.01.1970' Nur relevant, wenn der „Settings“-Eintrag „DumpPath“ konfiguriert ist. In diesem Fall wird eine Datei erstellt (s. Beschreibung), die einen „Timestamp“ enthält - dieser ist die Differenz des aktuellen Datums in Sekunden zu dem hierdurch angegebenen Datum.
datetime4.0.6
IncludeMSecondsInTimestamp1 „1“ angeben, falls der „Timestamp“ im Namen des „dump“-files auch Millisekunden enthalten soll (s. Beschreibung)
bit4.0.15

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 4)
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-518Es ist eine bestimte ASE-Rolle erforderlich, die der Benutzer aber nicht besitztnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-505Es existiert ein anderer Prozeß, der ein „dump“ ausführt, Prozedur wird daher abgebrochennur direkt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameternur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.5 2014-05-26Ab jetzt muß nicht mehr der Aufrufer die „sa“- oder „oper“-Rolle besitzen, weil das „dump“ mit „owner“-Rechten
ausgeführt wird
7.0.0 2013-06-04Kleiner Doku-Fehler [verwendete Prozeduren]
6.5.3 2013-03-18Interne Anpassungen wg. UTF8-Unterstützung
6.0.1 2010-07-20Behandlung des speziellen Fehlers „Unable to find quiescent point in the log“, der beim „with standby_access“-dump auftreten kann.
6.0.0 2010-03-261. Berücksichtigung des neuen „Settings“-Eintrags „DumpWithStandbyAccess“
2. Hinweis in der Doku, daß auch eine absolute Pfad-Angabe (zumindest unter Linux) möglich ist !
3. Quellcode-Anpassung an den aktuellen Standard
5.1.2 2006-06-26Ab jetzt wird vorher überprüft, ob ein anderer Prozeß existiert, der ein „dump“ ausführt, und in solch einem Fall brechen wir mit dem Fehler „-505“ ab !
5.0.0 2004-12-21Fehler beim Aufruf von „_mi_StartProcedure“ : Der Parameter „IncludeMSecondsInTimestamp“ wurde nicht übergeben
4.0.16 2004-08-311. Die Millisekundenangabe im „dump“-filename - falls „IncludeMSecondsInTimestamp = 1“ angegeben ist - besteht jetzt immer aus 3 Zahlen [d.h. hat evtl. führende „0“en] !
2. Änderung des Default-Werts für „IncludeMSecondsInTimestamp“ von „0“ auf „1“
4.0.15 2004-07-30Neuer Parameter „IncludeMSecondsInTimestamp“
4.0.13 2004-05-181. Aufruf der Prozeduren „_mi_StartProcedure“, „_mi_FinishProcedure“ und „_mi_ChooseParamValueSeperator“
2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur
4.0.6 2003-11-14Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/mi_DumpTransactionLog_Ad'

Mit xmllint 5) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/mi_DumpTransactionLog_Ad' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'mi_DumpTransactionLog_Ad',
		array(
			// 'DatabaseName' => NULL,
			// 'DateOffset' => '01.01.1970',
			// 'IncludeMSecondsInTimestamp' => 1
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="mi_DumpTransactionLog_Ad">
			<Parameters>
				<!-- <Parameter Name="DatabaseName">NULL</Parameter> -->
				<!-- <Parameter Name="DateOffset">'01.01.1970'</Parameter> -->
				<!-- <Parameter Name="IncludeMSecondsInTimestamp">1</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/mi_dumptransactionlog_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)