无法删除sql用户或使用正确的凭据进行连接

时间:2011-03-26 18:46:34

标签: sql-server-2008

使用SQL Server 2008 Express

我创建了一个新数据库,然后在其上恢复了数据库的副本。数据库备份中存在sql用户,因此已通过还原操作将其添加到数据库中。当我尝试删除此用户时,我得到:

“数据库主体拥有数据库中的模式,无法删除”

这令人困惑。用户尚不存在,但它拥有架构?为什么不能删除它?

接下来,如果我添加具有该用户名和有效密码的用户,则用户甚至无法连接到数据库。

这一直困扰着我,原因是什么以及如何解决这个问题?

2 个答案:

答案 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

在我为每条记录执行此操作后,我可以删除该帐户。