数据库

"因为选定的用户拥有对象,所以无法除去该用户"解决方法

2010-01-04

方法一:

 我还原了一个别人的数据库后来准备建一个跟他一样的用户的时候我想删除以前的用户,但是却出来一个这样的提示 "因为选定的用户拥有对象,所以无法除去该用户",问题解决了,总结一下经验,操作步骤:
    数据库服务器==>属性==>服务器设置选项==>选择"允许对系统目录直接进行修改==>确定==>打开数据库==>表==>sysusers==>删除用户==>将先前选取的'允许对系统目录直接进行修改'选项去掉==>确定==>重新建立用户"操作步骤图片简介如下:



    


 

 

方法二:

对mssql出现选定的用户拥有对象而无法删除的处理

--将下面的代码在查询分析器中执行,修改修改库名

use 你的库名
go

declare tb cursor local
for
Select 'sp_changeobjectowner '
+quotename(
+quotename(user_name(uid))
+'.'+quotename(name),'''')
+',''dbo'''
sysobjects
where objectproperty(id,N'isusertable')=1
and uid<>user_id('dbo')
declare @s nvarchar(4000)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb

 


MSSQL备份移植到另一服务器还原时容易遇到的问题……
MSSQL备份移植到另一服务器还原时容易遇到的问题,尤其是从虚拟主机备份回来的数据库在本机还原的问题…

会出现用SQL原来的用户名和密码无效的情况
无法删除某一个系统表
用sa连接做Select时提示表名无效
无法删除原备份数据库中的用户名,提示“因为选定的用户拥有对象,所以无法除去该用户。”
主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户……

这时候需要用sp_changeobjectowner 将对象的所有关系更改到另一个用户上,既更改数据库对象的所有者。

格式:

sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
例子 在查询分析器中录入:

sp_changeobjectowner 'web102101.tablename', 'dbo'
依次将所有的所属用户都改为dbo,然后现在数据库的用户中把孤立用户删除,再到安全中删除登陆信息。

并可以再依次创建新用户了