使用SQL Server 2008 Express
我创建了一个新数据库,然后在其上恢复了数据库的副本。数据库备份中存在sql用户,因此已通过还原操作将其添加到数据库中。当我尝试删除此用户时,我得到:
“数据库主体拥有数据库中的模式,无法删除”
这令人困惑。用户尚不存在,但它拥有架构?为什么不能删除它?
接下来,如果我添加具有该用户名和有效密码的用户,则用户甚至无法连接到数据库。
这一直困扰着我,原因是什么以及如何解决这个问题?
答案 0 :(得分:8)
这可能是因为您还原了数据库,并且用户在备份时已经在该数据库中。使用
修复用户登录关联sp_change_users_login 'Auto_Fix', 'username'
http://msdn.microsoft.com/en-us/library/ms174378.aspx
另见
http://www.fileformat.info/tip/microsoft/sql_orphan_user.htm
答案 1 :(得分:4)
sp_change_users_login
对我不起作用。
但是这样做了:
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('user')
然后,获取上面列出的每条记录,并将SCHEMA_NAME
替换为使用以下语句返回的模式
ALTER AUTHORIZATION ON SCHEMA::SCHEMA_NAME TO dbo
在我为每条记录执行此操作后,我可以删除该帐户。