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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren, Trigger, Batches und benutzerdefinierte Funktionen » Prozeduren » Prozeduren und Funktionen zum Ausführen mit Eigentümer- oder Aufruferprivilegien einrichten

 

Systemprozeduren vor Version 16.0 als Aufrufer oder Definierer ausführen

Einige Systemprozeduren in der Software vor Version 16.0, die mit Privilegien verbundene Aufgaben in der Datenbank ausführen, z.B. Ändern von Tabellen, können mit den Privilegien des Aufrufers oder des Definierers (Eigentümer) ausgeführt werden. Beim Erstellen oder Initialisieren einer Datenbank können Sie angeben, ob diese speziellen Systemprozeduren mit den Privilegien ihrer Eigentümer (Definierer) oder den Privilegien des Aufrufers ausgeführt werden sollen.

Wenn die Datenbank so konfiguriert ist, dass diese Systemprozeduren im Definierermodus ausgeführt werden, benötigt der Aufrufer keine zusätzlichen Privilegien, weil die Prozedur mit den Privilegien des Definierers (meist die dbo- oder SYS-Rolle) ausgeführt wird, der bereits die erforderlichen Privilegien hat.

Wenn die Datenbank so konfiguriert ist, dass sie im Aufrufermodus ausgeführt wird, muss der Aufrufer die Privilegien haben, die in der Dokumentation für die Prozedur verlangt werden. Der Aufrufer benötigt außerdem das EXECUTE-Privileg für die Prozedur, das er jedoch als Mitglied von PUBLIC erbt.

Hinweis

Das Standardverhalten für benutzerdefinierte Prozeduren wird durch den Aufrufer-/Definierermodus nicht beeinflusst. Das bedeutet: Wenn die Definition der benutzerdefinierten Prozedur keinen Aufrufer oder Definierer angibt, wird die Prozedur mit den Privilegien des Definierers ausgeführt.

Wie diese Systemprozeduren bei der Datenbankerstellung oder beim Upgrade ausgeführt werden, steuern Sie mit einer der folgenden Methoden:

  • CREATE DATABASE...SYSTEM PROCEDURE AS DEFINER-Anweisung   Wenn Sie CREATE DATABASE...SYSTEM PROCEDURE AS DEFINER OFF angeben, erzwingt der Datenbankserver die Privilegien des Aufrufers. Dies ist die Standardeinstellung für neue Datenbanken.

    Wenn Sie CREATE DATABASE...SYSTEM PROCEDURE AS DEFINER ON angeben, erzwingt der Datenbankserver die Privilegien des Definierers (Eigentümers). Dies war das Standardverhalten bei Datenbanken vor Version 16.0.

  • ALTER DATABASE UPGRADE...SYSTEM PROCEDURE AS DEFINER-Anweisung   Diese Klausel verhält sich so wie bei der CREATE DATABASE-Anweisung. Wenn die Klausel nicht angegeben ist, wird das bestehende Verhalten der Datenbank, die einem Upgrade unterzogen wird, beibehalten. Wenn Sie beispielsweise ein Upgrade einer Datenbank vor Version 16.0 durchführen, werden die Vorgänge standardmäßig mit den Privilegien des Definierers ausgeführt.

  • -pd-Option, Initialisierungsdienstprogramm (dbinit)   Wenn Sie beim Erstellen der Datenbank die Option -pd angeben, erzwingt der Datenbankserver beim Ausführen dieser Systemprozeduren die Privilegien des Definierers. Wenn Sie die Option -pd nicht angeben, ist das Standardverhalten, dass die Privilegien des Aufrufers erzwungen werden.

  • -pd-Option, Dienstprogramm zum Upgrade (dbupgrad)   Wenn Sie beim Upgrade der Datenbank die Option -pd Y angeben, erzwingt der Datenbankserver beim Ausführen dieser Systemprozeduren die Privilegien des Definierers.

    Wenn Sie die Option -pd N angeben, erzwingt der Datenbankserver beim Ausführen dieser Systemprozeduren die Privilegien des Aufrufers.

    Wenn diese Option nicht angegeben ist, wird das bestehende Verhalten der Datenbank, die einem Upgrade unterzogen wird, beibehalten.

Hinweis

Der PUBLIC-Systemrolle wird das EXECUTE-Privileg für alle Systemprozeduren erteilt. Neu erstellten Benutzern wird standardmäßig die PUBLIC-Rolle erteilt, sodass die Benutzer bereits das EXECUTE-Privileg für Systemprozeduren haben.

Der Standardwert für benutzerdefinierte Funktionen und Prozeduren bleibt durch die Entscheidung über Aufrufer/Definierer unbeeinflusst. Daher gilt: Auch wenn Sie diese Systemprozeduren als Aufrufer ausführen, bleibt die Standardeinstellung für benutzerdefinierte Prozeduren der Definierer.

 Liste der Prozeduren, die durch die Aufrufer/Definierer-Einstellung beeinflusst werden
 Liste der Prozeduren, die unabhängig von der Aufrufer/Definierer-Einstellung mit den Privilegien des Aufrufers ausgeführt werden
 Siehe auch

Festlegen des von einer Datenbank benutzten Sicherheitsmodells (SQL)