Zugriff auf Generator

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
dmun
Beiträge: 6
Registriert: Do 17. Okt 2019, 16:03

Mo 11. Nov 2019, 19:51

Hallo,

vor ein paar Wochen habe ich eine Firebird DB von einem 2.5 auf einen aktuelle Firebird 3 Server unter Debian umgezogen. Die Datenbank wird von einem Warenwirtschaftsprogramm verwendet, welches soweit auch problemlos arbeitet - fast. Wird in der WaWi ein Auftrag gelöscht, dann bekomme ich diese Fehlermeldung:
"no permission to ALTER access to GENERATOR GEN_NAME"
Dem Datenbankbenutzer mit der sich die WaWi verbindet habe ich die die Rolle "GRANT RDB$ADMIN TO wawibenutzer" zugeteilt aber dennoch kommt es in ganz bestimmten Situation zu dieser Fehlermeldung. Leider komme ich an dieser Stelle nicht mehr weiter bzw. drehe ich mich im Kreis und die Überlegung ist ob man dem Benutzer noch zusätzlich irgendwelche ALTER-Rechte an dem Zähler zuteilen muss und wenn ja mit welchem Befehl ? Ich dachte eigenlich dass RDB$ADMIN schon ALTER-Rechte hat, oder ?

Falls jemand einen Tipp für mich hat...

Grüße, Dirk
Benutzeravatar
martin.koeditz
Beiträge: 145
Registriert: Sa 31. Mär 2018, 14:35

Di 12. Nov 2019, 09:02

Hi Dirk,

in welchen Situationen kommt es zu der Meldung? Im Trigger? Oder greifst du anderweitig auf den Generator zu?

Gruß
Martin
Martin Köditz
it & synergy GmbH
dmun
Beiträge: 6
Registriert: Do 17. Okt 2019, 16:03

Di 12. Nov 2019, 14:01

Hi Martin,

das kann ich leider nicht sagen, da ich keine Sourcen von der WaWi selbst habe. Ich kann nur soviel sagen, dass es während eines Löschvorgangs passiert und hierbei vermutlich der Zähler (Generator) für die Auftragsnummer geändert werden soll.
Kann man sich irgendwie anschauen welche Berechtigungen dem Benutzer für den jeweiligen Generator zu geteilt sind ?
Show Grants geht scheinbar nicht (mehr) unter FB 3 ???

Grüße, Dirk
bfuerchau
Beiträge: 135
Registriert: Mo 7. Mai 2018, 18:09

Di 12. Nov 2019, 14:52

Wenn ich mir die Meldung so ansehe "no permission to ALTER access to GENERATOR GEN_NAME" dann soll die Berechtigung des Zugriffes geändert werden und nicht der Inhalt.

Um herauszufinden was da genau gewollt wird, hilft dir die Trace-Diagnostic:

https://firebirdsql.org/rlsnotesh/rnfb25-trace.html

Bestimmte Aktionen waren unter 2.5 nur mit Zugriff auf die Meta-Dateien RDB$xxx möglich. Ab 3.0 gibt es dafür native SQL-DDL's und RDB$-Zugriffe sind z.T. nicht mehr erlaubt.
Wenn in der Anwendung also ein Generator zurückgesetzt wird, wenn eine Tabelle leer ist, muss dafür in 3.0 "Alter Sequence ..." verwendet werden:
https://firebirdsql.org/refdocs/langref ... r-seq.html

Ggf. erfolgt der Zugriff aber via RDB$GENERATORS.
dmun
Beiträge: 6
Registriert: Do 17. Okt 2019, 16:03

Di 12. Nov 2019, 19:41

Danke für den Tipp. Ich verstehe auch nicht wieso hier ALTER Rechte benötigt werden, aber grundsätzlich wäre dies schon mal eine Erklärung wieso der Fehler erst unter FB3 und nicht schon unter 2.5 aufgetreten ist. Gibt es auch einen Unterschied zwischen Linux FB 3.0 und Windows FB 3.0 ?

Ich bin den Link zum erzeugen von Traces durchgegangen, aber so wie ich es verstehe muss die Trace-Ausgabe vom jeweiligen Benutzer gestartet werden, also in diesem Fall aus der Anwendung heraus. Leider ist mir dies nicht möglich, da ich nicht die Sourcen habe und/oder die Anwendung selbst schreibe. Verbesser mich aber gerne, wenn ich es falsch verstehe.

Ich werde dennoch den Hinweis von Dir an die Entwickler der Anwendung weiter geben, mal sehen ob es etwas bringt...

Grüße, Dirk
bfuerchau
Beiträge: 135
Registriert: Mo 7. Mai 2018, 18:09

Mi 13. Nov 2019, 17:06

"Administrators can manage any trace session."

Das ist halt etwas problematisch, da man einen Trace über die Connection-ID startet. Dazu muss man diese erst mal über MON$ATTACHEMENT ermitteln.

Vom Grundsatz gibt es erst mal keinen Unterschied zwischen den Host-Systemen, entscheidend ist die Versionnummer.
Antworten