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

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

編輯:關於SqlServer

       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