信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

标题: 错误 21002: [SQL-DMO]用户“XXX”已经存在 [打印本页]

作者: admin    时间: 2008-6-21 11:38
标题: 错误 21002: [SQL-DMO]用户“XXX”已经存在
MSSQL2000迁移数据库或者还原数据库后,新建相同用户名的时候或者指定数据库登录用户时出现错误提示“错误21002:[SQL-DMO]用户“XXX”存在
产生原因:
这就是我们通常所说的“孤立用户”,所谓孤立用户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。
孤立帐户产生的原因一般是以下两种:
1.将备份的数据库在其他机器上还原;
2.重装系统,或SQL SERVER之后只还原了用户库。

解决办法:
解决办法是使用sp_change_users_login来修复。
sp_change_users_login的用法有三种。

修复方法:
步骤1:
打开查询分析器,进入对应数据库运行以下命令
exec sp_change_users_login 'REPORT'
列出当前数据库的孤立用户
步骤2:
exec sp_change_users_login 'AUTO_FIX','USERNAME'
可以自动将用户名所对应的同名登录添加到syslogins中。
步骤3:
exec sp_change_users_login 'UPDATE_ONE','USERNAME','DENG LU MING'
用户名映射为指定的登录名。
运行完以上三个命令,你再试试看,用户就能正常登录了。
作者: admin    时间: 2008-6-21 11:39
作者:fbysss
msn:jameslastchina@hotmail.com  
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:sqlserver数据库用户,关联缺失
背景:数据库从另外一台服务器备份之后还原,发现程序中登录数据库失败。
排查:发现"安全性"->"登录"中的数据库用户与数据库没有关联,但是手工再关联,却报出错误21002:[sql-dmo]用户***已经存在的异常信息。而删除该数据库用户也无法进行,因为它已经是一些表的owner(否则,这么做也可以解决问题)。
解决:
(1)在企业管理器中点击SQL服务器根节点,右键->属性->服务器设置->允许对目录结构进行直接修改,打勾,确定。
(2)在数据库中找到sysusers表,删除name=[yourdbuser]的记录即可。如果不做第一步,会报出“ 未启用对系统目录的特殊更新。系统管理员必须重新配置SQL Server 以允许这种操作”的错误。
(3)再到"安全性"->"登录"中建立用户与数据库的关联。
(4)重新设置SQLServer,把“允许对目录结构进行直接修改”前面的勾去掉。
小结:至于数据库还原之后用户与数据库的关联为何缺失,暂时没找到根本原因,不过这种方式相对于使用sp_changeobjectowner来对表、视图等对象的owner进行修改之后,删除用户再建立用户的方式来得方便很多,也不容易出错。




欢迎光临 信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试 (http://bbs.tuandui.org.cn/) Powered by Discuz! X3.2