SQLServer 物件建立注意事項之dbo
最近,一客戶遇到一個奇怪的問題,sqlserver資料庫,使用備份恢復到目標機器。之後,在目標伺服器建立了測試函式物件,但是執行查詢的時候卻提示物件不存在,再次嘗試重新建立該函式及其依賴的物件時能正常執行。經過仔細檢查發現登陸操作的使用者擁有的預設架構是db_owner,檢查建立的資料庫下的相關函式顯示db_owner.func_name,當查詢語句引用物件加上db_owner.func_name時可以執行正常執行查詢。後來在建立函式及其依賴的物件時加上dbo.func_name,再次執行查詢可以正常執行。
一、問題現象
在sqlserver資料庫中建立了測試函式物件,但是執行查詢的時候卻提示物件不存在:
再次嘗試重新建立該函式及其依賴的物件時,沒有發現任提示報錯:
二、問題分析
檢視指定資料庫下該函式的位置情況,發現其在db_owner下:
嘗試執行select * from db_owner.Fn_GetQuestion……能正常執行查詢:
後經過檢視執行操作的使用者的預設架構是db_owner。
三、問題處理
將函式及其依賴的物件刪除,在物件名稱前新增dbo.字首後再次執行建立,程式測試查詢恢復正常。
四、總結
sqlserver資料庫與其他資料庫不一樣,其資料庫物件預設存放在dbo方案下,程式執行解析時也是預設在dbo方案下查詢,當類似本案例的函式或者表物件建立沒有新增dbo.字首時,建立的物件就可能放在其他方案下,導致程式執行解析出現異常。
因此,使用sqlserver資料庫時,建立表或者函式等物件,最好養成顯示新增dbo.字首。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2926032/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlserver 2005 安裝注意事項SQLServer
- Vue中更改物件檢測注意事項Vue物件
- PHP物件和介面抽象類注意事項PHP物件抽象
- 使用ProForm的useRef()物件的注意事項ORM物件
- sqlserver2008還原事務日誌(注意事項)SQLServer
- SQL Server Alwayson建立代理作業注意事項SQLServer
- Oracle複合索引的建立和注意事項Oracle索引
- SqlServer注意事項總結,高階程式設計師必背。SQLServer程式設計師
- Amoeba for MySQL學習研究之注意事項MySql
- RandomAccessFile注意事項randomMac
- nginx 注意事項Nginx
- @Lombok注意事項Lombok
- for in 迴圈遍歷物件時需要注意的事項物件
- 溫故之C# using注意事項C#
- yahoo s4安裝之注意事項
- 快取注意事項快取
- 使用parallel注意事項Parallel
- 字串分割注意事項字串
- Xlistview的注意事項View
- 函式注意事項函式
- DUPLICATE DATABASE 注意事項Database
- bootstrap引用注意事項boot
- ovm搭建注意事項
- CSP 考前注意事項
- 生產注意事項
- 電量注意事項
- 點晴OA工作流表單模板建立注意事項
- 部署專案注意事項
- iOS 程式碼注意事項iOS
- 換工作的注意事項
- 使用Google Fonts注意事項Go
- 程式設計注意事項程式設計
- Go 切片使用注意事項Go
- Android ShortCuts注意事項Android
- 伺服器注意事項伺服器
- 筆記:MMM注意事項筆記
- AIX配置NFS注意事項AINFS
- godoc 技巧與注意事項Go