對mssql出現選定的用戶(hù)擁有對象而無(wú)法刪除的處理
--將下面的代碼在查詢(xún)分析器中執行,修改修改庫名
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
MSSQL備份移植到另一服務(wù)器還原時(shí)容易遇到的問(wèn)題……
MSSQL備份移植到另一服務(wù)器還原時(shí)容易遇到的問(wèn)題,尤其是從虛擬主機備份回來(lái)的數據庫在本機還原的問(wèn)題…
會(huì )出現用SQL原來(lái)的用戶(hù)名和密碼無(wú)效的情況
無(wú)法刪除某一個(gè)系統表
用sa連接做Select時(shí)提示表名無(wú)效
無(wú)法刪除原備份數據庫中的用戶(hù)名,提示“因為選定的用戶(hù)擁有對象,所以無(wú)法除去該用戶(hù)。”
主要原因是原來(lái)的備份還原時(shí)保留了原用戶(hù)的信息,導致產(chǎn)生孤立用戶(hù)……
這時(shí)候需要用sp_changeobjectowner 將對象的所有關(guān)系更改到另一個(gè)用戶(hù)上,既更改數據庫對象的所有者。
格式:
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
例子 在查詢(xún)分析器中錄入:
sp_changeobjectowner 'web102101.tablename', 'dbo'
依次將所有的所屬用戶(hù)都改為dbo,然后現在數據庫的用戶(hù)中把孤立用戶(hù)刪除,再到安全中刪除登陸信息。
并可以再依次創(chuàng )建新用戶(hù)了
在另一臺機器上還原之前﹐首先建立好一個(gè)登錄用戶(hù)cust﹐密碼123﹐然后再還原數據庫。然后再執行下面的語(yǔ)句將登錄用戶(hù)cust與你還原的數據庫的用戶(hù)cust對應起來(lái)﹕
exec sp_change_users_login 'Auto_Fix','cust',null

