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

2006-4-5 19:50:00

方法一

首先你需要做的第一件事

企业管理器-〉选择服务器-〉属***-〉服务器设置-〉挑上允许对系统目录。。。-〉确定

第二步

找到你的数据库找到sysusers表那你以前的用户删除

第三步回去吧属***值改回来

第四部重建用户即可


方法二


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


Create PROCEDURE dbo.User_ChangeObjectOwnerBatch

@OldOwner as NVARCHAR(128),

@NewOwner as NVARCHAR(128)

AS


DECLARE @Name as NVARCHAR(128)

DECLARE @Owner as NVARCHAR(128)

DECLARE @OwnerName as NVARCHAR(128)


DECLARE curObject CURSOR FOR

select ’Name’ = name,

’Owner’ = user_name(uid)

from sysobjects

where user_name(uid)=@OldOwner

order by name


OPEN curObject

FETCH NEXT FROM curObject INTO @Name, @Owner

WHILE(@@FETCH_STATUS=0)

BEGIN

if @Owner=@OldOwner

begin

set @OwnerName = @OldOwner + ‘.’ + rtrim(@Name)

exec sp_changeobjectowner @OwnerName, @NewOwner

end

– select @name,@NewOwner,@OldOwner


FETCH NEXT FROM curObject INTO @Name, @Owner

END


close curObject

deallocate curObject


GO




MSSQL备份移植到另一服务器还原时容易遇到的问题……

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


会出现用SQL原来的用户名和密码无效的情况

无法删除某一个系统表

用sa连接做Select时提示表名无效

无法删除原备份数据库中的用户名,提示“因为选定的用户拥有对象,所以无法除去该用户。”

主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户……


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


格式:


sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'

例子 在查询分析器中录入:


sp_changeobjectowner 'web102101.tablename', 'dbo'

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


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



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


2007-11-29 21:59



        如果你用数据库自己新建的用户test建立了几张表,然后你的数据库备份/还原到了其他服务器上。你就必须要删除数据库中的原有用户test,才能在新服务器上建立test这个用户。否则你就无法用原配置访问。

        此时你删除test这个用户的时候,数据库就会提示“因为选定的用户拥有对象,所以无法除去该用户”。这个时候你需要用sp_changeobjectowner '用户名.表名', 'dbo'来除去test这个用户的全部对象。才能删除用户。例如 sp_changeobjectowner 'test.table1', 'dbo'。

        在出去test这个对象后,你就可以删除它,然后再新服务器重建这个对象。   

        不过这个时候我建议修改DBHelper,让你做数据库操作的时候用全表名,例如:select * from test.table1这样的结构您就可以用其他用户访问,而不需要去操作这个用户