2014-02-12 14 views
2

我有一個導入自己的VIEW的導軌應用程序。mssql INFORMATION_SCHEMA COLUMNS空

現在,第一個mssql查詢失敗,因爲信息模式在被詢問某個表中的可用列(哪些導軌需要準備對象)時返回0行。

當連接到通過工作室MSSQL服務器,我可以展開視圖並查看所有列需要,但是查詢的信息架構是這樣的:

| SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='view'

返回零行。

我認爲是一個權限問題(雖然我沒有得到任何錯誤,只是一個空的結果集),並已手動授予對相應用戶的視圖的權限,它仍然存在。我也做了查詢作爲實際創建數據庫的管理員,並且仍然有0行。

我想知道羯羊:

  • 有任何明顯的理由失敗?
  • MSSQL根據需要構建INFORMATION_SCHEMA,即當我查詢SCHEMA.COLUMNS表時,mssql使用緩存數據還是實際詢問數據庫此時哪些列存在?
  • 如果答案是否:我可以重建COLUMNS緩存/表嗎?
  • 在所有VIEWs工作中都執行此查詢嗎?

我也重新啓動了sql服務,並查看事件數據庫搜索破損的表,索引或其他東西。事件雖然沒有透露任何東西(顯而易見)。

還有什麼可以錯過的?

感謝, -u

+1

的可能重複:http://stackoverflow.com/questions/7217886/unreliable-information-schema-schema-information-on-sql -服務器 – TTeeple

回答

0

使用此查詢來獲取列名的你的意見......

SELECT C.name 
FROM sys.columns c INNER JOIN sys.views v 
ON c.[object_id] = v.[object_id] 
WHERE v.name = 'Your_View_Name' 

原因,你should'nt使用信息架構視圖,請閱讀本The case against INFORMATION_SCHEMA views的文章亞倫伯特蘭。

0

確保指定表的完整路徑:

select COLUMN_NAME 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_CATALOG = 'dbasename' and TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'tablename'