查詢資料庫對象名無效
原因一:新建的資料庫,沒有將初始數據導入到新庫里。
解決方法:
請登錄到我司資料庫控制面板->備份還原系統,然後使用資料庫還原的功能,在那裡直接將您的資料庫備份上傳還原,如果操作過程沒有出現錯誤,一般您的資料庫就已經還原了,此方法適合還原一些初始數據不是很大的資料庫(30M以內),如果您的資料庫初始數據很大,在線上傳還原的成功率比較低,這時請使用資料庫導入導出的方法進行還原,詳細的導入導出方法請查看我司的另一篇幫助文檔資料庫導入導出方法詳解
原因二:資料庫做過遷移,新資料庫的對象所有者名稱不同造成
資料庫做了遷移後,一般會進行導入/還原數據的過程,在這個過程中,要注意新資料庫的完整對象名與原來是一致的。
比如,您的舊資料庫名叫 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
end
close @CrsrVar
deallocate @CrsrVar
2. 可能您的編寫網站程序的時候沒有注意通用性,在查詢數據時採用了類似select * from dbuser1.table1這樣的SQL語句,一般來說,這不是一個好的習慣,在這種情況下,如果資料庫遷移過的話,經常會導致對象名無效的錯誤,為了避免這種不必要的問題,建議您在程序中查詢數據時,直接用select * from table1這樣的方式,就是在程序中不在用對象的完整名稱,而是單使用表名或視圖名,這樣就可以避免不必要的「對象名無效」的問題。
Ⅱ 用SQL Server2000建資料庫,運行程序時顯示「對象名無效」怎麼解決
查詢分析器上邊的下拉資料庫列表中,看不到你創建的資料庫么?
你的對象名無效,是資料庫中沒有user_info這個表名,我想你不會犯把表名寫錯這樣的錯誤,肯定是你的資料庫連接的不對。
你先檢查一下查詢分析器登錄的伺服器是不是你本機的伺服器?
另外確認企業管理器下創建的資料庫是不是創建在了本地伺服器上。
最後檢查一下查詢分析器登陸後上方的下拉框裡面有沒有自己的資料庫,有,那就選中。沒有,肯定是你配置的問題。
Ⅲ sql查詢出現對象名無效怎麼辦
1、確認資料庫是否選擇正確,默認選擇的是系統資料庫master
Ⅳ SQL新建查詢時,表名沒錯,為什麼說對象名無效
1.以sql2012為例,我們在sql查詢時,有時會遇到這種情況:查詢失敗,提示「對象名 xxx 無效」。
Ⅳ java連接資料庫時顯示對象名無效為什麼
建議檢查一下,對應庫下是不是確定有這張表。
是不是代碼中設置的用戶是有訪問這張表的許可權。
如果有幫助到你,請點擊採納。
Ⅵ SQL資料庫的對象名無效
可能你沒選中你需要操作的資料庫名稱(在工具左上角)
你可以寫全了試試 資料庫名.dbo.表名
希望可以幫到你
Ⅶ java連接上資料庫,可是顯示對象名無效為什麼
jdbc連接成功的話,就說明你的環境變數設置正確了,而且那些連接的URL也設置對了
會出現對像名無效,極有可能是資料庫的設置許可權不對,比方說如果你連接的是SQLSERVER2000,那麼你必需在你的資料庫裡面設置用戶許可權
Ⅷ 如何解決「SQL對象名無效」的問題
java中連接資料庫,資料庫連接字元串不是可以指定資料庫名么,指定了應該就沒問題了。
String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //連接SQL資料庫的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name為資料庫名
String Username="username"; //用戶
String Password="password"; //密碼
Class.forName(Driver).new Instance(); //載入數據可驅動
Connection con=DriverManager.getConnection(URL,UserName,Password);
(8)查詢資料庫對象名無效擴展閱讀:
SQL具有數據定義、數據操縱和數據控制的功能。
1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。
2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。
3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。
Ⅸ SQL查詢問題:對象名 ' '無效
企業管理器工具欄裡面的資料庫名稱顯示的是什麼??把它設成正確的資料庫名稱。要是在.NET頁面自然不會出現這樣的情況,因為你的連接字元串裡面已經指定了正確的資料庫名稱。
或者:select * from 資料庫名.dbo.News where Typeid=11 order by NewsID desc
在不行就是表不存在嘍。
Ⅹ sql server對象名無效
sql server對象名無效
在你打代碼的時候,你並沒有轉到test庫,所以找不到表 你用 test.dbo.stuinfo就可以了,或者先選擇test庫作為當前工作庫