MSSQL2005错误21002:[SQL-DMO]用户”xxx”已经存在之删除孤立用户

MSSQL2005迁移数据库后,新建相同用户名的时候出现错误提示:“错误21002:[SQL-DMO]用户”xxx”已经存在”

产生原因:

这就是我们通常所说的“孤立用户”,所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。

孤立帐户的产生一般是一下两种:

1.将备份的数据库在其它机器上还原;
2.重装系统或SQL SERVER之后只还原了用户库

解决方法:

在数据库的sysusers中删除xxx
使登录用户和数据库的孤立用户对应起来
其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户。
这里可以使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。

查看孤立用户:

sp_change_users_login 'report'

系统会列出当前数据库的孤立用户数。
我们只需要选择当前数据库为testdb,然后运行

sp_change_users_login 'update_one','test','test'

系统就会提示修复了一个孤立用户。

如果没有建立test的登录用户,还可以用

sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'

来创建一个登录用户名为test,密码为testpassword的用户与之对应。

好了,到这里通常情况下,数据库对象得到访问问题已经解决了。

时间: 2024-09-25 07:40:13

MSSQL2005错误21002:[SQL-DMO]用户”xxx”已经存在之删除孤立用户的相关文章

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立

SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决_MsSql

错误21002:[sql-dmo]用户***已经存在错误 此错误的原因多是因为将MSSQL备份移植到另一服务器还原时出现. 主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户 解决方法: 1.打开mssql企业管理器→数据库→展开出问题的数据库如"mydb"→"用户"→在右侧窗口中选择出问题的用户名如:"***"→右击鼠标→删除 2.企业管理器→安全性→登录→在右侧窗口中选择出问题的用户名如:"***"→属性→数据

SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决

错误21002:[sql-dmo]用户***已经存在错误 此错误的原因多是因为将MSSQL备份移植到另一服务器还原时出现. 主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户 解决方法: 1.打开mssql企业管理器→数据库→展开出问题的数据库如"mydb"→"用户"→在右侧窗口中选择出问题的用户名如:"***"→右击鼠标→删除 2.企业管理器→安全性→登录→在右侧窗口中选择出问题的用户名如:"***"→属性→数据

SQL Server提示"选定的用户拥有对象,所以无法除去该用户”_MsSql

我试了网上提供的一些方法都不行,最后还是自己用SQL解决了些问题. 1 在查询分析器里面选中出问题的数据库,然后输入: Exec sp_configure 'allow updates',1 --允许更新系统表. RECONFIGURE WITH OVERRIDE 2.运行如下SQL语句: UPDATE sysobjects SET uid=1 --把数据库里所有的对象都归属到用户dbo 3.执行如下SQL语句: Exec sp_configure 'allow updates',0 --关闭系

SQL Server提示"选定的用户拥有对象,所以无法除去该用户”

我试了网上提供的一些方法都不行,最后还是自己用SQL解决了些问题. 1 在查询分析器里面选中出问题的数据库,然后输入: Exec sp_configure 'allow updates',1 --允许更新系统表. RECONFIGURE WITH OVERRIDE 2.运行如下SQL语句: UPDATE sysobjects SET uid=1 --把数据库里所有的对象都归属到用户dbo 3.执行如下SQL语句: Exec sp_configure 'allow updates',0 --关闭系

Oracle 如何删除数据库用户?

举例:删除用户  abc, 首先,以sysdba用户登录数据库 $sqlplus / as sysdba 删除用户abc SQL>drop user abc  cascade 注意: 删除了用户abc,只是删除了该用户下的schema objects,是不会删除相应的tablespace的. 删除指定用户所有表 1. select 'Drop table '||table_name||';' from all_tables where owner='要删除的用户名(注意要大写)'; 2.删除所有

初始化MySQL用户(删除匿名用户)_Mysql

安装完MySQL后,系统默认会创建一个不需要密码的root用户,和一个无用户名无密码的匿名用户(Anonymous Account).进行下面的初始化操作以合理授权,增强安全. 设置root密码先以root身份登入mysql -u root,设置root密码: SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); 创建新用户# 创建用户和设置密码 CREATE USER '新用户'@'localhost' IDENTIFI

如何添加或删除ubuntu用户和组【转】

转自:http://blog.csdn.net/sin90lzc/article/details/7525670  在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组users,例:useradd –g users user1   一.创建用户: 1.使用命令 useradd 例:useradd user1--创建用户user1    useradd –e 12/30/2009 user2--创建u

MS SQL Server错误21002:[SQL-DMO]用户xxx已经存在

server|错误 错误21002:[SQL-DMO]用户"xxx"已经存在,如何解决!急!!!! 在数据库的sysusers中删除xxx update: 使登录用户和数据库的孤立用户对应起来       其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户.       这里可以使用存储过程sp