Hi @Ed Hall ,
Hello, My understanding is that when a SQL DB is created the SYSADMIN role is assigned the DBO role. My question is, if SYSADMIN has DBO formally removed and is assigned another role later, like db_datareader, does it still retain DBO level permissions in the database?
Yes. It does. Becasue it is one member of SYSADMIN role. One user who is SYSADMIN, in other words, if one who has SYSADMIN permission, he can perform any activities in this server.
In your case, app-user and DBO all members of SYSADMIN, so ther is no use to change roles at database level.
Note: It is generally not recommended to directly assign server roles to users, because server roles are global, which means that you have server-level permissions. It is generally recommended to assign databases to users and then assign database role permissions to the corresponding databases. Do not add the database role created by the user to the fixed server database role, otherwise it will cause the fixed database role to be upgraded.
Next, let us clarify the server-level role and database-level role.
More information:permissions-hierarchy-database-engine, sql-server-create-user
BR,
Mia
If the answer is helpful, please click "Accept Answer" and upvote it.