Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren, Trigger, Batches und benutzerdefinierte Funktionen

 

Verbergen des Inhalts von Prozeduren, Funktionen, Triggern, Ereignissen und Ansichten

Es kann sinnvoll sein, eine Anwendung und eine Datenbank zu verteilen, ohne dabei die Logik innerhalb der Prozeduren, Funktionen, Trigger, Ereignisse und Ansichten preiszugeben. Als zusätzliche Sicherheitsmaßnahme können Sie den Inhalt dieser Objekte mit der SET HIDDEN-Klausel der Anweisungen ALTER PROCEDURE, ALTER FUNCTION, ALTER TRIGGER und ALTER VIEW verbergen.

Die SET HIDDEN-Klausel verschleiert den Inhalt der zugeordneten Objekte und macht sie unlesbar, wobei die Nutzbarkeit der Objekte nach wie vor möglich ist. Des weiteren können Sie die Objekte in eine andere Datenbank entladen und neu laden.

Die Änderung kann nicht rückgängig gemacht werden und löscht den Originaltext des Objekts. Deshalb ist eine Sicherung des Originaltextes dieses Objekts außerhalb der Datenbank notwendig.

Hinweis

Wenn die preserve_source_format-Datenbankoption auf "On" gesetzt wurde, speichert der Datenbankserver die formatierte Quelle aus CREATE- und ALTER-Anweisungen für Prozeduren, Ansichten, Trigger und Ereignisse und platziert sie in der source-Spalte der entsprechenden Systemansicht. In diesem Fall wird sowohl die Objektdefinition als auch die Quellendefinition ausgeblendet.

Die Einstellung "On" für die preserve_source_format-Datenbankoption verhindert jedoch nicht, dass die ursprüngliche Quellendefinition des Objekts durch die SET HIDDEN-Klausel gelöscht wird.

Bei der Fehlersuche unter Verwendung des Debuggers wird weder die Definition der Prozedur angezeigt, noch zeigen die Prozedurprofilinformationen den Quelltext an.

Eine Ausführung der oben genannten Anweisungen auf einem bereits verschlüsselten Objekt hat keine Auswirkungen.

Um Text für alle Objekte eines bestimmten Typs zu verbergen, können Sie eine der folgenden Schleife ähnliche Schleife verwenden:



BEGIN
    FOR hide_lp as hide_cr cursor FOR
        SELECT proc_name, user_name
        FROM SYS.SYSPROCEDURE p, SYS.SYSUSER u
        WHERE p.creator = u.user_id
        AND p.creator NOT IN (0,1,3)
    DO
        MESSAGE 'altering ' || proc_name;
        EXECUTE IMMEDIATE 'ALTER PROCEDURE "' ||
            user_name || '"."' || proc_name
            || '" SET HIDDEN'
    END FOR
END;
 Siehe auch