程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL2000/Sql2005中無法刪除用戶怎麼辦

SQL2000/Sql2005中無法刪除用戶怎麼辦

編輯:更多數據庫知識

   SQL Server刪除用戶的步驟

  1、sql server MANAGEMENT STUDIO--》數據庫--》安全性--》構架,先刪除對應的構架

  2、sql server MANAGEMENT STUDIO--》數據庫--》安全性--》用戶,刪除對應的用戶先刪除此用戶對應的架構,然後再刪除對應的用戶。

  上面的方法我無法刪除用戶

  SQL Server 2000 無法刪除用戶的解決方法 .

  今天在轉移數據的時候就遇到這個問題了,解決方法如下:

  把sql數據庫從一個服務器移到另一個服務器上,或者把數據庫備份了以後,重新卸載了sqlserver2000又重新安裝了,之後還原,都可能會遇到這個有關用戶權限的提示"sql2000 因為選定的用戶擁有對象,所以無法除去該用戶",此時,刪除這個用戶又刪除不掉,在安全裡面重新添加吧,又會提示此用戶存在,這該怎麼辦呢?

  由於mssql200數據庫的錯誤,我把一個原來的數據庫還原到現在的sql上,此時我來到用戶裡面,想把還原過來的用戶刪除掉,結果卻提示" 因為選定的用戶擁有對象,所以無法除去該用戶 ":

  刪除不了,我就准備把系統裡的該用戶添加到這個數據庫上來看看可以不,卻又提示這麼一個錯誤(microsoft sql-dmo 窗口): 錯誤21002:[SQL-DMO]用戶"liuhui"已經存在

  因為業務要求,我又不能重新建立一個用戶給它或換一個用戶,該數據庫只能被該用戶使用,標准的規范的服務器格式不能打破,要不會帶來以後維護的超級麻煩,沒辦法求救google 和 baidu ,結果無所不知的他們讓我失望了,沒辦法,只好請求一個經驗豐富的朋友幫忙,問題解決了。

  解決方法:

  1.打開企業管理器,展開服務器,右鍵點擊本地服器,屬性:

  2.選擇常規窗口,將 自動開啟sql server 代理 選上:

  3.重復動作1.打開打開sql server 屬性(配置)窗口,選擇 服務器設置窗口:

  將 允許對系統目錄直接進行修改 選上,確定

  4.展開數據庫,看到數據庫系統表 sysusers ,右鍵--打開表--返回所有行:

  5.選擇應為還原而添加進來的用戶,找到相關行,點右鍵 刪除

  在返回到用戶列表,去刪除用戶就可以刪除了,再去sql的安全裡面把該數據庫對應的用戶添加上去,測試正常!

  最後再返回動作3把選擇勾上的 允許對系統目錄直接進行修改 勾去掉

  SQL Server 2005 無法刪除用戶的解決方法 .

  一個數據庫,運行在SQL Server 2005下,數據庫用戶無法刪除,在刪除時提示"數據庫主體在該數據庫中擁有架構,無法刪除"。

  原因很簡單,就是由於此用戶在數據庫中擁有某些架構的所有權,將相關架構的用戶權限移除或刪除架構即可。

  此處以一個用戶UserA為例,說明具體應進行的操作,注意以下方面:

  1、數據庫的表、視圖、存儲過程等等,如果架構為UserA,將其所有者全部改為dbo。

  2、在"安全性"-"架構"下,如果名稱對象中有UserA這一項,將其直接刪除;如果其它對象的所有者是UserA,將其所有者改為dbo

  3、在"安全性"-"角色"-"數據庫角色"下,打開每一個角色的屬性,從"角色列表"中將UserA刪除。

  做完這幾步,基本沒有其它問題了,能夠順利地刪除無效的數據庫用戶。

  另一種利用代碼方式我們可以適用上面兩種版本的數據庫

  對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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved