mysql 物件名無效 SQL物件名無效的解決方法

2021-10-18 10:14:28 字數 1786 閱讀 2867

問題一:使用sqlserver資料庫時,產生sql物件名無效的問題一般是以下兩種常見原因,下面根據不同的原因給出解決方法。

原因一:新建的資料庫,沒有將初始資料匯入到新庫里。

原因二:資料庫做過遷移,新資料庫的物件所有者名稱不同造成

資料庫做了遷移後,一般會進行匯入/還原資料的過程,在這個過程中,要注意新資料庫的完整物件名與原來是一致的。

比如,您的舊資料庫名叫 db1 , 舊資料庫使用者是 dbuser1, 現在要遷移到新的資料庫上,新資料庫名是 db2, 新資料庫使用者是 dbuser2。

sqlserver物件的完整物件名是 資料庫名.使用者名稱.表名 這樣的,假設你的舊資料庫上有個表名叫 table1,那它的完整物件名就是 db1.dbuser1.table1,

當你用新的資料庫名登入匯入舊資料時,新的表名可能變成了 db2.dbuser2.table1,這樣的話,您的程式查詢資料時可能會出現物件名無效的錯誤。

解決方法:要解決這個問題,一般需要做兩步操作:

1. 請分別使用 sp_changeobjectowner '這裡改為資料庫完整物件名','dbo' 這個命令將所有的使用者表,使用者檢視,使用者儲存過程等的所有者全部改為系統內建的特殊使用者dbo

以下是乙個可以簡化執行上面操作的儲存過程,以下儲存過程執行後可能還會有部分的物件改不到所有者,這時請手動執行上面的命令將未能改所有者的物件重新嘗試一下。

declare @crsrvar cursor

declare @pname  varchar(40) --物件名

declare @oldowner varchar(40) --原物件所有者

declare @objfullname varchar(80) --原物件全名

set @oldowner = '這裡改為資料表/檢視/儲存過程等的舊所有者名稱'

set   @crsrvar = cursor for select name from sysobjects where xtype='u' --xtype=u 表示使用者表

open  @crsrvar

fetch next from @crsrvar into @pname

while(@@fetch_status=0)

begin

set @objfullname  = @oldowner + '.' + @pname

exec sp_changeobjectowner @objname=@objfullname,@newowner='dbo'  --dbo為所有者名

fetch next from @crsrvar into @pname

endclose   @crsrvar

deallocate   @crsrvar

2. 可能您的編寫**程式的時候沒有注意通用性,在查詢資料時採用了類似 select * from dbuser1.table1 這樣的sql語句,一般來說,這不是乙個好的習慣,在這種情況下,如果資料庫遷移過的話,經常會導致物件名無效的錯誤,為了避免這種不必要的問題,建議您在程式中查詢資料時,直接用 select * from table1這樣的方式,就是在程式中不在用物件的完整名稱,而是單使用表名或檢視名,這樣就可以避免不必要的「物件名無效」的問題。

問題二:在資料庫控制面板操作還原時出現以下錯誤提示原因:

出現此錯誤提示,一般是使用的舊資料庫和當前新的資料庫版本不同導致的,如原來的資料庫用的是sql2008,但現在新資料庫卻是sql2005,或是mysql,這樣的情況都會導致還原操作時出現以上的錯誤提示!

SQL物件名無效的解決

產生sql物件名無效的問題大多原因是由於資料遷移導致的,下面我們給出解決方法.在使用資料庫的過程中,經常會遇到資料庫遷移或者資料遷移的問題,或者有突然的資料庫損壞,這時需要從資料庫的備份中直接恢復。但是,此時會出現問題,這裡說明幾種常見問題的解決方法。一 孤立使用者的問題 比如,以前的資料庫的很多表...

SQL物件名無效的解決

sql物件名無效的解決方法 產生sql物件名無效的問題大多原因是由於資料遷移導致的,下面我們給出解決方法.在使用資料庫的過程中,經常會遇到資料庫遷移或者資料遷移的問題,或者有突然的資料庫損壞,這時需要從資料庫的備份中直接恢復。但是,此時會出現問題,這裡說明幾種常見問題的解決方法。一 孤立使用者的問題...

SQL物件名無效的解決

sql物件名無效的解決方法 產生sql物件名無效的問題大多原因是由於資料遷移導致的,下面我們給出解決方法.在使用資料庫的過程中,經常會遇到資料庫遷移或者資料遷移的問題,或者有突然的資料庫損壞,這時需要從資料庫的備份中直接恢復。但是,此時會出現問題,這裡說明幾種常見問題的解決方法。一 孤立使用者的問題...