Following on from my question here How to REVOKE ROLE GRANTED BY another user on Firebird 2.5.8?
and @Arioch's helpful suggestion to query what ROLE is actually connected prior to the command.
SELECT CURRENT_ROLE FROM RDB$DATABASE
Now despite my connection string explicitly using "ROLE=RDB$ADMIN", checking in gsec that the given user has admin option, when I run the command the result is NONE. This was using the Firebird ADO.NET FirebirdSql.Data.FirebirdClient interface v6.6.
So I performed a similar check by using FlameRobin, logging in with the same user and the RDB$ADMIN ROLE specified, and the result is the same:
Any ideas what I am doing wrong as to why this is not returning 'RDB$ADMIN'?

As user rights are granted in a specific database, the user must be RDB$ADMIN in that specific database and must specify the role on connect. That a user has the admin role in GSEC only means that a user has the admin role in the security database. That doesn't mean they have the admin role in a specific database.
The fact
CURRENT_ROLEreturnsNONEmeans that the user either didn't specify a role, or hasn't been granted the RDB$ADMIN role in the current database.To quote from the Firebird Language Reference, User Authentication, RDB$ADMIN Role:
and
The
GRANT ADMIN ROLEclause applies only to the security database (specifically for theCREATE/ALTER/DROP USERSQL user management statements), and only if the user connects through a normal database where they also have the RDB$ADMIN role specifying that role on connect.To grant a user administrator privileges in a specific database, they need to have been granted that role - in that specific database - using:
And they need to specify the role on connect.