Adventures in Machine Learning

Mastering SQL Server: Dropping Roles Safely and Efficiently

Database administrators must ensure that users of their database have the right level of access to perform their necessary duties. This process includes managing security and access privileges, such as granting, revoking, or modifying roles.

These roles govern how users interact with the database and which permissions they have to perform certain actions. In this article, we will explore the SQL Server DROP ROLE statement, including syntax, limitations, and examples.

SQL Server DROP ROLE Statement:

The DROP ROLE statement is a SQL Server command used to remove existing roles from a database. Its syntax is straightforward and consists of the primary keywords DROP ROLE and the role’s name that you want to remove.

Suppose you want to remove the role ‘auditor’ from a database. “`

DROP ROLE auditor;


It is important to note that once you remove a role, all the members of that role lose their access to the database.

Therefore, it is critical not to remove any critical role from the database without a plan. Limitations of DROP ROLE Statement:

The DROP ROLE statement has some limitations that you need to consider before using it.

Here are the limitations that can have a significant impact on your database:

Cannot remove roles that own securables: You cannot delete a role if it owns any securable objects such as schema, table, view, stored procedure, synonym, or functions. You must remove these owned objects directly before you can remove the role.


Cannot drop the role ‘auditor’, because it owns the table ‘invoices’. “`

Cannot remove roles that have members: You cannot remove a role that has members; instead, you must drop the members first before dropping the role.


Cannot drop the role ‘auditor’ because there are members in it. “`

Fixed database roles cannot be dropped: There are some roles that SQL Server accounts use to provide internal database maintenance and security features.

These roles cannot be dropped. “`

Cannot drop the role ‘db_owner’.

It is an internal database role. “`

Optional IF EXISTS Clause:

One benefit of using the DROP ROLE statement with the optional IF EXISTS clause is that it allows you to check if the role exists before removing it.

This clause can help avoid an error when removing the role that does not exist.




Example 1: Removing a Role Without Members

Suppose you have two roles, sales and auditors, in the BikeStores database.

If the auditors’ role is no longer required, you can remove it using the following statement:




If the execution is successful, the system responds with a message “Command completed successfully,” indicating that the auditors’ role has been removed. Conclusion:

In conclusion, the SQL Server DROP ROLE statement is essential for managing access permission to the database.

Before executing the DROP ROLE statement, administrators need to be cautious and aware of any limitations that might cause undesired results. By using the optional IF EXISTS clause, you can avoid errors that arise when removing a role that does not exist.

It is important to develop a well-planned strategy for removing roles from your database to avoid any adverse impact on the system’s data security. Example 2: Removing a Role with Members

Suppose that in the BikeStores database, the sales role has members, such as james.

To remove the role, administrators must first remove the members before executing the DROP ROLE statement; otherwise, the system will display an error message. Error Message When Executing the DROP ROLE Statement:

When a role has members, administrators must explicitly remove all members from the role before they can delete it.

Executing the DROP ROLE statement without first removing the members will generate this error message:


Msg 15151, Level 16, State 1, Line 3

Cannot drop the role ‘sales’, because it does not exist or you do not have permission. “`

This message indicates that the role was not dropped because one or more members still belong to it.

Therefore, administrators should remove all members first before dropping the role. Finding Members of a Role Using SELECT Statement:

To check which members belong to a role, administrators can use the SELECT statement on the sys.database_role_members table.

The following script shows an example of how to use the SELECT statement to query members of the sales role in the BikeStores database:


USE BikeStores;

SELECT [member] = USER_NAME(member_principal_id), [role] = USER_NAME(role_principal_id)

FROM sys.database_role_members

WHERE USER_NAME(role_principal_id) = ‘sales’;


In this example, the query will return a list of all members in the ‘sales’ role in the BikeStores database. Administrators should take note of all members before removing them from their roles.

Removing a Member from a Role Using ALTER ROLE Statement:

To remove a member from a role, use the ALTER ROLE statement as follows:


USE BikeStores;



The syntax of the ALTER ROLE statement consists of the ALTER ROLE keyword followed by the name of the role and the keyword DROP MEMBER to remove a member from the role. You must specify the member name after the DROP MEMBER keyword.

After the successful execution of the ALTER ROLE statement, the member ‘james’ will no longer belong to the ‘sales’ role. Finally, Dropping the Role Using DROP ROLE Statement:

Now that the role no longer has any members, administrators can now proceed to execute the DROP ROLE statement.

Using the primary keywords DROP ROLE and the name of the role, administrators can execute the statement to remove the role from the database. “`

DROP ROLE sales;


This statement will drop the ‘sales’ role from the BikeStores database and free up any previously used resources.


In summary, removing a role with members requires administrators to take extra precautions to avoid errors that could compromise data security. The DROP ROLE statement will fail if the role still contains members, and administrators will receive an error message.

Checking for members using the SELECT statement and removing them with the ALTER ROLE statement is necessary before executing the DROP ROLE statement. By following these steps, administrators can effectively manage roles in the database, keeping it secure and organized.

In conclusion, the SQL Server DROP ROLE statement plays a critical role in managing database access by controlling user permissions. However, there are several limitations to the statement, such as not being able to remove roles with members or owned securables.

To avoid errors when removing a role, administrators must use the optional IF EXISTS clause and create a carefully crafted plan to remove members before executing the DROP ROLE statement. Additionally, SELECT and ALTER ROLE statements help to identify and remove members from a role effectively.

By following these best practices, administrators can maintain a secure and organized database environment. Overall, being knowledgeable about the SQL Server DROP ROLE statement can lead to enhanced database security, efficiency, and organization.

Popular Posts