Mit dieser Prozedur kann man für registrierte Prozeduren die Aufruf-Protokollierung und den Check von Ausführungsrechten anhand von Parameter-Bedingungen konfigurieren bzw. „customized“-Prozeduren neu registrieren.
Anmerkungen zu den Parametern „CheckForExecutionRestrictions“ und „LogExecutions“ :
Einschränkung bei Prozeduren, die NICHT „customized“ sind : Ist der bestehende Wert für „CheckForExecutionRestrictions“ bzw. „LogExecutions“ bereits „0“, kann dieser nicht mehr geändert werden, und von Werten ungleich „0“ kann nicht auf „0“ gewechselt werden !
Bei der Registrierung von Prozeduren, die mit „_ac_“ beginnen, werden die Parameter „CheckForExecutionRestrictions“ und „LogExecutions“ ignoriert - es wird für beide korrespondierenden Werte immer „0“ verwendet ! Insbesondere kann man diese Art registrierter Prozedur NICHT ändern (wohl aber löschen natürlich) !
Mögliche Werte für „CheckForExecutionRestrictions“ :
Mögliche Werte für „LogExecutions“ :
Ist die Protokollierung inkl. der Parameter-Werte aktiviert, werden auch Daten, die durch eine oder mehrere der „tempdb-Schnittstellen-Tabellen“ übergeben wurden, protokolliert : Pro Datensatz in einer der entsprechenden Tabellen in der „tempdb“ wird für jede Spalte der Wert gespeichert, und zwar zu einem Pseudo-Parameter-Namen, der so aussieht :
„<Eine Abkürzung des Tabellen-Namens mit maximal 10 Buchstaben>_<Spalten-Name>_<Datensatznummer>„
Derzeit werden nicht alle Tabelle der „tempdb“ unterstützt, sondern nur die folgenden (die Abkürzung des Tabellen-Namens, die für den „Pseudo-Parameternamen“ benötigt wird, entspricht dem Tabellen-Namen sofern nicht anders angegeben) :
Werte aus Spalten vom Typ „text“ (wie z.B. in „TextData“) können natürlich nicht komplett gespeichert werden - es werden nur die ersten 255 Zeichen übernommen.
Analoges gilt für den Typ „Image“ (wie z.B. in „ImageData“) : hier wird zunächst eine Konvertierung nach „varbinary(255)“ vorgenommen, der dann als „string“ interpretiert (das ergibt nichts Sinnvolles) und gespeichert wird…
HTTP-Method | POST |
HTTP-Auth | Optional |
Alias | mi_ModifyRegisteredProcedures_Ad |
Tags | |
Engine-Kategorie | configurations |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
ProcedureID | „NULL“ angeben, um eine neue (nur „customized“ !) Prozedur registrieren zu lassen. Ist ein Wert angegeben, wird der entsprechende Datensatz je nach „DeleteProcedure“ geändert oder gelöscht. | smallint | 4.0.7 | |
ProcedureName | Wird nur beachtet, wenn „NULL“ für „ProcedureID“ angegeben wurde. In diesem Fall wird die Prozedur mit diesem Namen registriert, sofern sie „customized“ ist, d.h. der Name „_cu_“ enthält oder mit „_ac_“ beginnt. (“-500“, falls es die Prozedur nicht gibt) | varchar(50) | 4.0.7 | |
DeleteProcedure | 0 | Relevant, falls „ProcedureID“ angegeben ist. „0“ : Der Datensatz zur „ProcedureID“ soll geändert werden „1“ : Der Datensatz zur „ProcedureID“ soll gelöscht werden - nur möglich, wenn es sich um eine „customized“ Prozedur handelt ! | bit | 4.0.7 |
CheckForExecutionRestrictions | Sollen bei Ausführung der Prozedur Einschränkungen bzgl. der Parameter geprüft werden ? (s. a. Beschreibung !) „0“ : grundsätzlich nicht möglich „1“ : grundsätzlich möglich „2“ : Überprüfung aktiviert | tinyint | 4.0.7 | |
LogExecutions | Soll jeder Aufruf der Prozedur protokolliert werden ? (s.a. Beschreibung !) „0“ : nicht möglich „1“ : möglich „2“ : einfache Protokollierung „6“ : mit Parameter-Werten „10“ : mit Werten aus „master..sysprocesses“ „14“ : „6“ UND „10“ | tinyint | 4.0.7 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-500 | Falsche Parameter | direkt und indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
6.5.3 | 2013-03-18 | Anpassungen an den aktuellen Quellcode-Standard, u.a. wg. UTF8-Unterstützung |
5.0.1 | 2005-03-29 | Möglichkeit, neben „cu“-Prozeduren auch „_ac_“-Prozeduren registrieren zu können [da diese ja quasi auch „customized“ sind] ! |
5.0.0 | 2004-12-21 | Beim Ändern von „CheckForExecutionRestrictions“ ist jetzt die Tatsache zu berücksichtigen, daß in dieser Spalte zusätzliche, intern verwendete Informationen gespeichert werden (z.B. ob es zur Prozedur Datensätze in „ProcedureExecRightsForUsers“ gibt) |
4.0.9 | 2004-03-03 | 1. Verwendung von „_mi_ChooseParamValueSeperator“ als Vorbereitung von „_mi_StartProcedure“ 2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur |
4.0.8 | 2004-02-20 | 1. Fehlende Überprüfung der Parameter „CheckForExecutionRestrictions“ und „LogExecutions“ beim Registrieren von „cu“-Prozeduren 2. Aufruf der Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“ 3. Diverse interne Änderungen |
4.0.7 | 2004-01-16 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_ModifyRegisteredProcs_Ad?ProcedureID=<value>&ProcedureName=<value>&CheckForExecutionRestrictions=<value>&LogExecutions=<value>'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_ModifyRegisteredProcs_Ad?ProcedureID=<value>&ProcedureName=<value>&CheckForExecutionRestrictions=<value>&LogExecutions=<value>' | xmllint --format -
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_ModifyRegisteredProcs_Ad', array( 'ProcedureID' => <value>, 'ProcedureName' => '<value>', 'CheckForExecutionRestrictions' => <value>, 'LogExecutions' => <value>, // 'DeleteProcedure' => 0 ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
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_ModifyRegisteredProcs_Ad"> <Parameters> <Parameter Name="ProcedureID"><!-- smallint value --></Parameter> <Parameter Name="ProcedureName"><!-- varchar value --></Parameter> <Parameter Name="CheckForExecutionRestrictions"><!-- tinyint value --></Parameter> <Parameter Name="LogExecutions"><!-- tinyint value --></Parameter> <!-- <Parameter Name="DeleteProcedure">0</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>