人妻无码中文字幕_人人妻人人澡人人爽人人精品_少妇性l交大片_亚洲国产精品网站在线播放

狼邦科技  
專注于高品質網站建設、軟件開發、視頻監控、系統集成、網絡工程等信息化服務于一體的科技公司
網站首頁 關于狼邦 產品中心 案例展示 解決方案 新聞資訊 聯系方式
您當前的位置:首頁 >> 詳細內容
 
詳細內容  
SQL對象(xiang)名無效的(de)解決方(fang)法


使用sqlserver數據庫(ku)時,產(chan)生SQL對象名無效(xiao)的問(wen)題一般(ban)是以下兩種常見原因,下面根據(ju)不(bu)同的原因給出解(jie)決方法。
原因一:新建(jian)的數據(ju)庫,沒有將初始數據(ju)導入(ru)到新庫里。
解(jie)決(jue)方法:請(qing)(qing)登錄到(dao)我(wo)司數(shu)(shu)(shu)據(ju)(ju)庫控制面(mian)板->備份(fen)還(huan)(huan)(huan)原(yuan)系統,然(ran)后使用數(shu)(shu)(shu)據(ju)(ju)庫還(huan)(huan)(huan)原(yuan)的(de)(de)(de)(de)功(gong)能(neng),在那里直接將您的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)庫備份(fen)上傳還(huan)(huan)(huan)原(yuan),如(ru)果操作過程沒有出(chu)(chu)現錯誤,一(yi)般(ban)您的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)庫就(jiu)已經(jing)還(huan)(huan)(huan)原(yuan)了(le),此方(fang)法(fa)適合還(huan)(huan)(huan)原(yuan)一(yi)些初(chu)始數(shu)(shu)(shu)據(ju)(ju)不是很(hen)大的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)庫(30M以內),如(ru)果您的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)庫初(chu)始數(shu)(shu)(shu)據(ju)(ju)很(hen)大,在線(xian)上傳還(huan)(huan)(huan)原(yuan)的(de)(de)(de)(de)成功(gong)率(lv)比(bi)較低(di),這時請(qing)(qing)使用數(shu)(shu)(shu)據(ju)(ju)庫導入導出(chu)(chu)的(de)(de)(de)(de)方(fang)法(fa)進行還(huan)(huan)(huan)原(yuan),詳細的(de)(de)(de)(de)導入導出(chu)(chu)方(fang)法(fa)請(qing)(qing)查看我(wo)司的(de)(de)(de)(de)另(ling)一(yi)篇幫助(zhu)文(wen)檔

原因二:數據(ju)庫做過遷移,新(xin)數據(ju)庫的(de)對象所有(you)者名稱不(bu)同造成

數據庫做了遷移后,一般(ban)會進(jin)行(xing)導(dao)入/還原數據的過(guo)程,在(zai)這個過(guo)程中,要注意新數據庫的完整對象名與原來是一致的。
比如,您的(de)舊(jiu)數據(ju)(ju)庫(ku)名叫 db1 , 舊(jiu)數據(ju)(ju)庫(ku)用(yong)戶(hu)是(shi) dbuser1, 現在要(yao)遷移到(dao)新的(de)數據(ju)(ju)庫(ku)上,新數據(ju)(ju)庫(ku)名是(shi) db2, 新數據(ju)(ju)庫(ku)用(yong)戶(hu)是(shi) dbuser2。
sqlserver對象的完整對象名(ming)是 數據(ju)庫名(ming).用戶(hu)名(ming).表名(ming) 這樣的,假設(she)你的舊數據庫上有(you)個表名叫 table1,那它的完整對象名就是 db1.dbuser1.table1,
當你用(yong)新的數據庫名登錄導入(ru)舊數據時(shi),新的表名可能(neng)變(bian)成(cheng)了 db2.dbuser2.table1,這樣(yang)的話,您(nin)的程序(xu)查詢(xun)數據時(shi)可能(neng)會出(chu)現對象名無效的錯誤。
解決方(fang)法:要解(jie)決這個問題,一般需要做兩步操作:
1. 請分(fen)別使用 sp_changeobjectowner '這里改為數據庫完(wan)整對象名','dbo' 這個命(ming)令將所有的(de)(de)用(yong)戶(hu)表,用(yong)戶(hu)視圖,用(yong)戶(hu)存儲過程等的(de)(de)所有者全部(bu)改為系統內建的(de)(de)特殊(shu)用(yong)戶(hu)dbo
以(yi)下是一個(ge)可(ke)以(yi)簡(jian)化執(zhi)行(xing)上面操作的(de)存儲過(guo)程,以(yi)下存儲過(guo)程運行(xing)后可(ke)能(neng)還會有部分的(de)對(dui)象改(gai)不到所(suo)有者,這時請手動執(zhi)行(xing)上面的(de)命(ming)令將未能(neng)改(gai)所(suo)有者的(de)對(dui)象重新嘗試一下。
declare @CrsrVar cursor
declare @pname? varchar(40) --對(dui)象名
declare @oldowner varchar(40) --原對(dui)象所有者
declare @objfullname varchar(80) --原對象全名
set @oldowner = '這里改(gai)為數據表/視圖/存(cun)儲過程等的舊所(suo)有(you)者名稱(cheng)'

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 這樣的方式,就是在程序中不在用對象的完整名稱,而是單使用表名或視圖名,這樣就可以避免不必要的“對象名無效”的問題。

?


打印本頁】 【關門窗口
上一篇:最新版Adobe Fireworks CC下載 [2015/2/1]
下一篇:Asp.net 文件上傳示例代碼 [2013/4/14]
   
 監控維修手冊 []
 超市監控/店鋪監控/超市網... []
 ASP.net發郵件的實例 []
 SQL對象名無效的解決方法 []
 微軟.NET戰略和ASP.NET簡介 []
 Asp.net 文件上傳示例代碼 []
 熱烈祝賀威寧縣人民政府門... []
 站點代碼優化(全面提高頁面... []
 2014年春節放假通知 []
 2015年春節放假通知 []
旗下網站:
Copyright zoozet.cn 版權所有:貴州狼邦科技有限公司
 
地址:貴州省貴陽市南明區花溪大道東側保利鳳凰灣B1區1-12-25號 電話:0851-85111798
業務及技術:13688513435(潘先生) 財務及客服:18985103435(王女士)