講解孤立用戶和對象名無效問題的解決方法[1]

發表于:2008-06-16來源:作者:點擊數: 標簽:
講解孤立用戶和對象名無效問題的解決方法[1] 作者:GOD 來源:希賽網 在使用 數據庫 的過程中,經常會遇到數據庫遷移或者數據遷移的問題,或者有突然的數據庫損壞,這時需要從數據庫的備份中直接恢復。但是,此時會出現問題,這里說明幾種常見問題的解決方法

講解孤立用戶和對象名無效問題的解決方法[1]

作者:GOD 來源:希賽網

  在使用數據庫的過程中,經常會遇到數據庫遷移或者數據遷移的問題,或者有突然的數據庫損壞,這時需要從數據庫的備份中直接恢復。但是,此時會出現問題,這里說明幾種常見問題的解決方法。

  一、孤立用戶的問題

  比如,以前的數據庫的很多表是用戶test建立的,但是當我們恢復數據庫后,test用戶此時就成了孤立用戶,沒有與之對應的登陸用戶名,哪怕你建立了一個test登錄用戶名,而且是以前的用戶密碼,用該用戶登錄后同樣沒辦法操作以前屬于test的用戶表。

  這個問題有兩種辦法解決。

  先說解決的前提條件。

  首先,要用備份文件還原數據庫,我們這里的數據庫名為testdb,里面有屬于用戶test的用戶表。這個很容易了操作了,不多講了,在企業管理器中很方便可以恢復?;謴秃?,就產生了孤立用戶test。

  然后,用sa用戶或者具有DBA權限的用戶登錄,創建一個test數據庫登錄用戶,密碼隨便設置了,也可以和以前的保持一致。我們用它來對應孤立的test用戶。

  下面就有兩種操作方法了,第一種就是改變對象的屬主,第二種就是使登錄用戶和數據庫的孤立用戶對應起來。

  方法一:修改對象屬主

  就是將原本屬于數據庫用戶test的用戶表,修改為屬于dbo的用戶表;然后修改test登錄用戶的數據庫為testdb,就可以直接使用test登錄用戶登錄后對該數據庫進行操作了。

  使用的存儲過程

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

  參數說明:

  [ @objname = ] 'object'

  當前數據庫中現有表、視圖、用戶定義函數或存儲過程的名稱。object 是 nvarchar(776),沒有默認值。如果架構及其所有者具有相同的名稱,則 object 可由現有對象所有者限定,格式為 existing_owner.object。

  [ @newowner=] 'owner '

  將成為對象的新所有者的安全帳戶的名稱。owner 的數據類型為 sysname,沒有默認值。owner 必須是可訪問當前數據庫的有效數據庫用戶、服務器角色、Microsoft Windows 登錄名或 Windows 組。如果新所有者是沒有對應數據庫級主體的 Windows 用戶或Windows 組,則將創建數據庫用戶。

  實例:

  以下示例將 authors 表的所有者更改為dbo。

  EXEC sp_changeobjectowner 'authors', 'dbo';
  GO

  這個方法有個最大的缺點就是,當表的數量非常多,而且還有存儲過程或者觸發器之類的修改起來會非常麻煩,需要一個一個修改,所以,不提倡使用?,F在網上有一個批量修改的存儲過程,大家可以找一下,這里就不說了,而是教大家一個更簡單的。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97