In a SQL Server 2005 database, I was having a hard time deleting a
user I had created.
I kept getting this error:
The database principal owns a database role and cannot be dropped.
Msg 15421.
MSDN and Google were not helpful on this error. Ater lots of search
attempts I kept coming up empty:
I spent some time looking through various dialogs in SQL Server
Management Studio. I was unable to find the problem - probably because I
am not as familiar with the UI as I was with Enterprise Manager.
I finally wrote a script that helped me identify for which role the
user was listed as an owner. Here it is:
select dp2.name as role, dp1.name as owner
from sys.database_principals as dp1 inner join sys.database_principals
as dp2
on dp1.principal_id = dp2.owning_principal_id
where dp1.name = 'DeleteMe
'
In the last line of the script, make sure you specifiy the user
name
and not
the login name. 'DeleteMe' is the user
name I want to delete. See the screen shot below:
After running this script, I found which role had my user listed as
owner.
With that knowledge, I opened the role dialog in SQL Server
Management Studio and changed the owner to 'dbo'. Below is the before
screen shot.
The owner should be changed to a principal other than the one you are
trying to delete. I used 'dbo' as shown here:
Once this change was made I was able to delete the user I wanted to
get rid of.