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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用ProForm的useRef()物件的注意事項ORM物件
- SqlServer注意事項總結,高階程式設計師必背。SQLServer程式設計師
- 溫故之C# using注意事項C#
- RandomAccessFile注意事項randomMac
- @Lombok注意事項Lombok
- for in 迴圈遍歷物件時需要注意的事項物件
- 函式注意事項函式
- 生產注意事項
- 電量注意事項
- CSP 考前注意事項
- 快取注意事項快取
- 點晴OA工作流表單模板建立注意事項
- 部署專案注意事項
- iOS 程式碼注意事項iOS
- 換工作的注意事項
- Oracle使用*的注意事項Oracle
- VRPs 論文注意事項VR
- Python——常見注意事項Python
- 程式設計注意事項程式設計
- layer open div 注意事項
- [Android開發] 注意事項Android
- Android元件化注意事項Android元件化
- java呼叫kotlin注意事項JavaKotlin
- 部署nginx php注意事項NginxPHP
- TCP連線注意事項TCP
- 使用Google Fonts注意事項Go
- STL----vector注意事項
- 域名選擇注意事項
- Hashing雜湊注意事項
- 詳解Linux(Centos)之安裝Nginx及注意事項LinuxCentOSNginx
- 幾種簡潔建立執行緒的方式以及使用注意事項執行緒
- AWS雲建立EC2與使用注意事項-踩坑記錄
- C中memcpy使用注意事項memcpy
- 搭建 nuget 私服及注意事項
- Android自定義View注意事項AndroidView
- IMPDP分割槽表注意事項
- 測試階段注意事項
- 選擇SEO外包注意事項