MSSQL备份移植到另一服务器还原时容易遇到的问题,尤其是从虚拟主机备份回来的数据库在本机还原的问题…
对mssql出现选定的用户拥有对象而无法删除的处理
--将下面的代码在查询分析器中执行,修改修改库名
use 你的库名
go
declare tb cursor local
for
select 'sp_changeobjectowner '
+quotename(
+quotename(user_name(uid))
+'.'+quotename(name),'''')
+',''dbo'''
from 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
一般运行以上查询代码就有用了。
会出现用SQL原来的用户名和密码无效的情况
无法删除某一个系统表
用sa连接做Select时提示表名无效
无法删除原备份数据库中的用户名,提示“因为选定的用户拥有对象,所以无法除去该用户。”
主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户……
这时候需要用sp_changeobjectowner 将对象的所有关系更改到另一个用户上,既更改数据库对象的所有者。
格式:
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
例子 在查询分析器中录入:
sp_changeobjectowner 'web102101.tablename', 'dbo'
依次将所有的所属用户都改为dbo,然后现在数据库的用户中把孤立用户删除,再到安全中删除登陆信息。
并可以再依次创建新用户了